所以我有這個接口類型擦除醜陋的頭部,如何規避?
public interface EventHandler<E extends EventObject>
{
public void handleEvent(E event);
}
,我想獲得處理事件的,像這樣的IT類:
public class WorkingHandler implements EventHandler<MouseEvent>
{
public void handleEvent(MouseEvent event)
{
//handle event
}
}
上面的例子正常工作。但編譯器不會讓我多次執行EventHandler,因爲Type Erasure極其令人沮喪。
public class NotWorkingHandler implements EventHandler<MouseEvent>, EventHandler<KeyEvent>
{
public void handleEvent(MouseEvent event)
{
//handle mouse event
}
public void handleEvent(KeyEvent event)
{
//handle key event
}
}
幾個問題...
- 爲什麼Java的不允許類型擦除? IIRC它與Java的早期版本兼容是正確的嗎?
編輯:我的意思是爲什麼Java的有類型擦除(有它周圍的其他方法)
是否有任何形式的「MOD」 /「擴展」(由於缺乏一個更好的詞)還是允許我解決Type Erasure的編程語言?由於我不使用舊版Java,因此我不關心我的代碼與舊代碼兼容。
在Java語言中是否有任何可用於解決Type Erasure的變通方法?
如果否,那麼在我的程序中編寫事件處理的一些替代方法是什麼?
- 沒有意義。 Java確實允許類型擦除 - 實際上它實現了類型擦除。 – emory 2012-04-15 22:21:20
「是否有任何一種」mod「/」extension「(缺少更好的單詞)或編程語言讓我可以繞過Type Erasure?」 - 是的,許多語言沒有類型擦除。 – emory 2012-04-15 22:22:13
您正在尋找C# – 2012-04-15 22:23:28