0
因此,我正在从头开始编译编译器,但是在如何确定通过静态方法调用哪个类方面陷入困境。看看这个例子:访问Java中静态方法的包含类的类型
public abstract class Token {
public TokenType type;
public Token() {
super();
this.type = TokenType.getInstance(this.getClass());
}
public static TokenType type() {
Class<? extends Token> t = null; //WHAT SHOULD GO HERE
return TokenType.getInstance(t);
}
}
如果我再有,从令牌
public class TestToken extends Token {
public TestToken() {
super()
}
}
继承两个阶级,
public class TestToken2 extends Token {
public TestToken2() {
super()
}
}
我如何调用TestToken.type()和TestToken2 .type(),并通过它被称为静态方法知道?具体来说,我需要访问每个的Class对象。这甚至有可能吗?
注意 我知道我可以硬编码类中的每个的,但是,似乎是不必要的工作,像乐趣却少了:)
回答 你好的人从未来。正如尼尔斯在下面详细解释的那样,这是不可能的。你需要找到另一种方式。
因此,即使在执行TestToken.type()时,type()也会始终通过Token调用? –
是的,没有任何东西可以帮助你。 –
谢谢,只是做了一些转储堆栈跟踪的试验,看起来这个调用确实是给Token的,甚至没有碰到TestToken。谢谢!我会找到另一种方式来做我所需要的。 –