因此,我正在从头开始研究编译器,但在如何确定调用静态方法的类时遇到了困难。看一下这个例子:
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);
}
}
如果我有两个继承自 Token 的类
public class TestToken extends Token {
public TestToken() {
super()
}
}
和
public class TestToken2 extends Token {
public TestToken2() {
super()
}
}
如何调用 TestToken.type() 和 TestToken2.type(),并让静态方法知道它是通过哪个调用的?具体来说,我需要访问每个类的对象。这甚至可能吗?
请注意 ,我知道我可以在每个类中硬编码,但这似乎是不必要的工作,而且不那么有趣:)
回答 来自未来的人们你好。正如尼尔斯在下面彻底解释的那样,这是不可能的。你需要找到另一种方法。