2012-03-10 18 views
5

द्वारा प्रयोग की जाने मैं एक पार्सर एक असंख्य समय के बारे में इस संरचना है कि है:एक तर्क गुजर instanceof

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

मुझे पता है कि यह कैसे करना चाहते हैं:

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

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

मैं एम में एक गीलेवेयर विफलता है और विधि में टोकन टाइप की कक्षा को समझ नहीं सकता है। एक और समस्या यह है कि जावा एक शाब्दिक के रूप में 'टोकन टाइप' का इलाज कर रहा है। यही कारण है:

instanceof tokenType 

वाक्य रचना के संबंध में वैसे ही जैसे

instanceof CommaToken 

लग रहा है।

कोई विचार?

उत्तर

8

आप और getClass() (एक वर्ग संदर्भ से एक कक्षा वस्तु प्राप्त करने के लिए) (एक उदाहरण से एक कक्षा वस्तु प्राप्त करने के लिए) class के माध्यम से कक्षा वस्तुओं का उपयोग करके ऐसा कर सकते हैं:

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

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

तकनीकी तौर पर, के गतिशील बराबर 'exampleof' होना चाहिए ['कक्षा # isInstance (ऑब्जेक्ट)'] (http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html#isInstance (जावा। lang.Object)) –

संबंधित मुद्दे