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。謝謝!我會找到另一種方式來做我所需要的。 –