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

2 に答える 2

4

いいえ、使用する必要がありますClass.isInstance(Object)。キーワードは typeのinstanceofオブジェクトを想定していませんがClass、クラスの名前のみを直接想定していますが、Class.isInstance基本的には類似しています。

于 2012-04-24T19:32:20.290 に答える
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は同等です。

于 2012-04-24T19:29:49.697 に答える