5

NetBeans で次のようにコーディングしました。

public class Grafo<V, E>
{
    class Par
    {
        int a, b;
        Par(int a, int b) {
            this.a = a;
            this.b = b;
        }

        @Override
        public boolean equals(Object ob)
        {
            if(ob instanceof Par) {
                Par p = (Par)ob;
                return this.a==p.a && this.b==p.b;
            }

            return false;
        }
    }

    //stuff...
} //end of class Grafo

エラーは、内部クラス「Par」の equals() メソッドにあります。

NetBeans は、エラーは「instanceof のジェネリック型が不正です」と言っています。エラーは下の行にあります。

            if(ob instanceof Par) {

エラーの原因は何ですか?

4

2 に答える 2

9

試すob instanceof Grafo<?,?>.Par

ob instanceof Parコンパイラは、ジェネリック型パラメーターの実行時チェックが含まれると考えていると思います。つまり、 と同等ob instanceof Grafo<V,E>.Parです。ただし、instanceofテストはジェネリック型パラメーターをチェックできません。

于 2009-12-13T06:01:04.637 に答える
4
@SuppressWarnings("unchecked")
@Override
public boolean equals(Object ob)
{
    if(ob instanceof Grafo.Par) {
        Par p = (Par)ob;
        return this.a==p.a && this.b==p.b;
    }

    return false;
}

または、内部クラスを定義しますstatic

于 2009-12-13T06:05:18.043 に答える