2012-04-24 8 views
0

私はノードのリストを持っています。このノードは自分で定義したデータクラスです。各ノードには、オブジェクト型のデータフィールドがあります。ここで、データフィールドにパラメータオブジェクトを持つノードのリストでノードを探したいと思います。私は2つのオブジェクト(パラメータおよびデータ・フィールド内のオブジェクト)が同じタイプである場合は、最初の比較したかったので、私は、この方法を書いた:このインスタンスの条件はどのように見えるのですか?

public Node getnNodeByData(Object obj) { 
    for (Node node : nodes) { 
     if (node.getData() instanceof obj.getClass()) { 

     } 
    } 
} 

残念ながら、この条件が動作しません。

Incompatible operand types boolean and Class<capture#1-of ? extends Graph> 

なぜこれが問題なのかわかりません。これをどうすれば動作させることができますか?

答えて

4

いいえ、Class.isInstance(Object)を使用する必要があります。 instanceofキーワードは、タイプClassのオブジェクトを期待するのではなく、クラスの名前だけを直接指定しますが、Class.isInstanceは基本的には類似しています。

3

いいえ、そんなことはできません。 isAssignableFrom()またはisInstance()を使用してください。 2つの方法の違いは、isInstance(null)がfalseを返し、isAssignableFrom(null)がtrueになることです。


[object] instanceof [class] 

は、これに翻訳されなければならない:

[class].class.isAssignableFrom(object.getClass()); 

例:

Integer i = 4; 
boolean b = i instanceof Number; 
boolean k = Number.class.isAssignableFrom(i.getClass()); 

B kは等価です。

関連する問題