2016-10-30 9 views
0

私はパラメータとしてClassを取るクラスの中にメソッドを作成しようとしています。私が持っているコード:クラスが特定の型であるかどうかを調べる

public class MyEvent extends MyBPMNNode { 

public boolean isKindOf(Class<?> node) { 
    boolean b = MyEvent.this instanceof node; 
    return b; 
} 

しかし、私はそれが私を与え、それをコンパイルします。

Error:(9, 45) java: cannot find symbol 
symbol: class node 

私はここで間違って何をしているのですか? 「Class」クラスについての私の理解は、正しくないかもしれません。

+4

' node.isAssignableFrom(これ)。 'instanceof'は、コンパイル時定数第2オペランドを必要とします。 –

+0

訂正: 'instanceof'は第2オペランドとして*参照型*を必要とします。 –

+0

@AndyTurner: '.isAssignableFrom()'は 'Class'をとります。 'this'は' Class'ではありません – newacct

答えて

-2

特に理由なくジェネリックを紹介しています。これを試してみてください:

public boolean isKindOf(Object node) { 
     // weak 
     return node.getClass().isAssignableFrom(getClass()); 
     // stronger, but not appropriate in your case 
     //return this.getClass().equals(node.getClass()); 
    } 

アンディーターナーの答えははるかに簡潔です。私を許してください。

-1

あなたはおそらくnode.isAssignableFrom(MyEvent.this)の後です。

0

あなたが欲しい: `

public boolean isKindOf(Class<?> clazz) { 
    return clazz.isInstance(this); 
} 
関連する問題