2012-03-10 10 views
5

で使用する引数を渡す:私は、これは膨大な数の倍程度の構築持つパーサを持ってinstanceofは

if (tokens.first() instanceof CommaToken) { 
    tokens.consume(); 

私はこれを行う方法を知りたいのです:

if (match(CommaToken)) { ... blah ... } 

private boolean match(??? tokenType) { 
    if (tokens.first() instanceof tokenType) { ... blah ... } 
} 

私は」このメソッドのtokenTypeのクラスを把握することはできません。別の問題は、Javaが 'tokenType'をリテラルとして扱っていることです。それは次のとおりです。

instanceof tokenType 

は、構文に関してだけ

instanceof CommaToken 

のように見えます。

アイデア?

答えて

8

あなたが(インスタンスからClassオブジェクトを取得するために)class(クラスの参照からクラスオブジェクトを取得するため)とgetClass()を経由して、クラスオブジェクトを使用してこれを行うことができます。

if (match(CommaToken.class)) { ... blah ... } 

private boolean match(Class<?> klass) { 
    if (tokens.first().getClass().equals(klass)) { ... blah ... } 
} 
+4

技術的には、の動等価'instanceof'は[Class#isInstance(Object)']でなければなりません(http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html#isInstance(java。 lang.Object)) –

関連する問題