传递一个由instanceof使用的参数

时间:2012-03-10 04:55:31

标签: java 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

关于语法。

有什么想法吗?

1 个答案:

答案 0 :(得分:8)

您可以通过class使用Class对象(从类引用中获取Class对象)和getClass()(从实例获取Class对象)来执行此操作:

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

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