我有一个解析器,这个构造大约有数万次:
if (tokens.first() instanceof CommaToken) {
tokens.consume();
Run Code Online (Sandbox Code Playgroud)
我想知道如何做到这一点:
if (match(CommaToken)) { ... blah ... }
private boolean match(??? tokenType) {
if (tokens.first() instanceof tokenType) { ... blah ... }
}
Run Code Online (Sandbox Code Playgroud)
我有一个wetware故障,无法弄清楚方法中的tokenType类.另一个问题是Java将'tokenType'视为文字.那是:
instanceof tokenType
Run Code Online (Sandbox Code Playgroud)
看起来就像
instanceof CommaToken
Run Code Online (Sandbox Code Playgroud)
关于语法.
有任何想法吗?
您可以通过使用Class对象class(从类引用getClass()中获取Class对象)和(从实例获取Class对象)来完成此操作:
if (match(CommaToken.class)) { ... blah ... }
private boolean match(Class<?> klass) {
if (tokens.first().getClass().equals(klass)) { ... blah ... }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2621 次 |
| 最近记录: |