1

プログラムでファイル管理を処理できるオブジェクトを作成しようとしています。

パスインターフェイスには、必要なほとんどすべてのメソッドがありますが、カスタムメソッドをいくつか追加したいと思います。オブジェクトにPathを実装する場合、すべてのパスのメソッドをオーバーライドする必要があります。

インターフェイスのメソッドを実際にオーバーライドせずに、Pathインターフェイスのすべてのメソッドといくつかの追加のメソッドを持つオブジェクトを作成する方法はありますか?

ある意味、Pathインターフェースを拡張したいのですが、追加のメソッド本体も定義できるようになります。

4

3 に答える 3

1

パス インターフェイスに関するいくつかの小さな点について警告する場合があります。また、このインターフェイスを実装するための 2 つの提案があります。

私の知る限り、パス インターフェイスは、ファイル オペレータ オブジェクト内のパスのタイプ参照ポイントを作成するために存在します。パスは Paths Helper Class で作成できます (-s に注意してください)。ただし、どのクラスによっても実装されることはありません。したがって、共通型内でデータを渡すために使用されるインターフェイスです。これは、コーダーがPath Interfaceをタイプとして使用して情報を送信し、Path Type Objectを受信すると宣言されている他のクラス操作でPath Typed Objectを使用することになっていることを意味します。その結果、私の意見では、パス クラスを実装する必要はありません。

前述したように、2 つのことを提案できます。この問題は JavaSE7 Doc にも記載されています:こちら

1) まず、インターフェイスのすべてのメソッドに動作を追加する必要はありません。「実装されていない」メッセージログでそれらを宣言し、null を返すことができます。

2)しかし、より良い方法は、Ali Alamiriが述べたように抽象クラスを使用することです. 私は個人的には、abstract のサブクラスを作成するために大騒ぎせず、必要なメソッドを実装するだけです。よりフォールト トレラントなアプリケーションを作成したい場合は、サブクラスを使用して、実装されていないすべてのメソッドを実行し、それらすべてに対して警告メッセージ ログを使用します。

于 2013-12-21T12:22:59.170 に答える
0

できることは、インターフェイスabstractを実装するクラスを作成することです。Pathこのクラスでは、メソッドを実装するか、実装しないままにして、別のクラスがそれらを処理できるようにすることができます。次に、この抽象クラスを拡張して、必要なメソッドをオーバーライドできます。すべてのメソッドをオーバーライドする必要はありません。

例えば:

public abstract class AbstractPath implements Path
{
    //All methods declarations from Path interface
}

public class Base extends AbstractPath
{
   //Override any method declared in AbstractPath
}
于 2013-03-19T23:43:36.030 に答える