1

一部のノードには、特定のインターフェイスを実装するオブジェクトのみを含める必要があるツリー構造があります。しかし、そのインターフェースを拡張するインターフェースがあり、それらを実装するオブジェクトはノードに含まれるべきではありません。
したがって、オブジェクトが厳密に特定のインターフェイスを実装しているかどうかを確認する必要があります。

public interface IProcessCell {...}
public interface IMethodCell extends IProcessCell {...}

IProcessCell processInstance = new IProcessCell() {...}
IMethodCell methodInstance = new IMethodCell() {...}

/** Method implementing desired check */
public boolean check(IProcessCell instance) {...}

メソッド チェックは、processInstance の場合は true を返す必要がありますが、methodInstance の場合は false を返す必要があります

4

4 に答える 4

3

http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#getInterfaces()を使用できます

しかし、私にとってあなたがやろうとしていることは、ひどく書かれたアプリにパッチを当てるようなものです. 私にとって、より良い方法は、新しいインターフェイス (必要なオブジェクトのみが実装される) を作成し、「ツリー構造」ノードにその特定のインターフェイスを必要とするようにすることです。

于 2013-04-10T18:56:37.710 に答える
2

getInterfacesを使用して、実装されているインターフェースのリストを取得できます。

インスタンスを目的のインターフェースにすでにキャストしていると仮定すると、それをテストするだけですyourInstance.getClass().getInterfaces().length==1

于 2013-04-10T18:50:23.000 に答える
1

クラスは getInterfaces() メソッドを実装します。クラス[]を返します。これを使用すると、見つかるか見つからないまで反復して比較を行うことができます。 http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#getInterfaces()

于 2013-04-10T18:59:02.587 に答える