【发布时间】:2022-01-12 11:48:42
【问题描述】:
我有一条消息 dto
class MyMessage<T>{
T payload;
String groupId;
}
我有一个实现简单的接口
interface Sender<T>{
void sendMessage(T message);
}
class SenderService implements Sender<MyMessage>{
@Override
public void sendMessage(MyMessage message){...}
}
现在 MyMessage 有一个原始类型,我希望 MyMessage 也有一个类型参数,它将动态定义我的有效负载。如何实现?我尝试了以下方法。
class SenderService implements Sender<MyMessage>{
@Override
public <E> void sendMessage(MyMessage<E> message){...}
}
但由于方法未正确覆盖,因此会产生编译错误。我需要在我的抽象接口方法中进行哪些更改才能使其正常工作?
【问题讨论】:
-
如果
SenderService是MyMessage<String>的发件人,那不是只能发MyMessage<String>吗?为什么sendMessage取MyMessage<E>而E是任意类型? -
SenderService 可以发送任何类型的消息。不仅是字符串
标签: java generics type-parameter