gpt4 book ai didi

Java:如何设计此类以具有可选泛型 ParameterType?

转载 作者:行者123 更新时间:2023-12-01 20:21:20 26 4
gpt4 key购买 nike

我的代码中有这个类

public abstract class MyAbstractEventListener<E extends IMyEvent> {
public abstract void handleEvent(E e);
}

我可以用这种方式创建实例(我们称之为 A):

new MyAbstractEventListener<IMyEvent>() {
@Override
public void handleEvent(final IMyEvent e) {
// Method implementation
}
};

但就我的目的而言,在没有必需的事件信息时也能执行此操作将是理想的选择(我们称之为 B):

new MyAbstractEventListener() { // Or receiving some unused parameter
@Override
public void handleEvent() {
// Method implementation
}
};

没有关于该类是原始类的警告并建议对其进行参数化。

为了澄清,我希望类允许 A 或 B 实例化,每次都可以选择使用我喜欢的实例。如果有泛型参数,则为接收 IMyEvent 对象的方法,如果没有,则为不带参数的方法。

使用此类的代码示例如下:

EventBus.getInstance().addEventListener("some.string", new 
AbstractEventListener<IMyEvent>() {
@Override
public void handleEvent(final IMyEvent e) {
// Sometimes does use 'e', sometimes doesn't. That's the point
MyConfirmationWindow.showConfirmationWindow(MyWindowType.WARNING, "kk", "lll");
}
});

有办法吗?任何链接或资源将不胜感激。

最佳答案

好吧,你可以创建一个抽象子类:

public abstract class BlindListener extends MyAbstractEventListener<IMyEvent> {

public abstract void handleEvent();

@Override
public void handleEvent(IMyEvent iMyEvent) {
handleEvent(); // delegate to abstract method that ignores the argument
}
}

这实际上是一个使用泛型的类,但客户端永远不必处理它们:

new BlindListener() {
@Override
public void handleEvent() {

}
}

确实需要特定类型的实例仍然可以直接使用MyAbstractEventListener

关于Java:如何设计此类以具有可选泛型 ParameterType?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44635894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com