更新:感谢所有帮助过的人 - 这个问题的答案在于我在更复杂的代码中没有注意到的内容以及我对Java5协变返回类型的不了解.
原帖:
今天早上我一直在玩弄东西.虽然我知道我可以用不同的方式解决这个问题,但我发现自己已经痴迷于弄清楚为什么它不像我期望的那样工作.在花了一些时间阅读这篇文章之后,我发现自己并没有接近理解,所以我把它作为一个问题提出来,看看我是不是很愚蠢,或者是否有一些我不理解的事情发生在这里.
我创建了一个自定义事件层次结构,如下所示
public abstract class AbstractEvent<S, T extends Enum<T>>
{
private S src;
private T id;
public AbstractEvent(S src, T id)
{
this.src = src;
this.id = id;
}
public S getSource()
{
return src;
}
public T getId()
{
return id;
}
}
Run Code Online (Sandbox Code Playgroud)
具体实现如下:
public class MyEvent
extends AbstractEvent<String, MyEvent.Type>
{
public enum Type { SELECTED, SELECTION_CLEARED };
public MyEvent(String src, Type t)
{
super(src, t);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我创建一个这样的事件:
fireEvent(new MyEvent("MyClass.myMethod", MyEvent.Type.SELECTED)); …Run Code Online (Sandbox Code Playgroud)