我在尝试实现一个通用消息系统。根据目标,类必须实现不同的接口,服务器才能正确地反序列化。
为此,我有以下接口:
public interface IBasicInput
public interface IBasicOutput
public interface IMessage <I,O>
和类实现:
public class BasicInput1 implements IBasicInput
public class BasicOutput1 implements IBasicOutput
public class Type1Message<I extends IBasicInput,O extends IBasicOutput> implements IMessage<I, O> {
/**
* @Override from IMessage
*/
public void setIput(I input) {
}
/**
* @Override from IMessage
*/
public O getResult() {
return null;
}
}
此消息的目标是有一条实现iMessage的消息,输入类必须是IBasicInput的实现,输出是IBasicOutput的实现。
实例化该类时
IMessage<IBasicInput,IBasicOutput> message = new Type1Message<BasicInput1,BasicOutput1>();
我发现了一个错误:
类型不匹配:无法从Type1Message转换为IMessage
我不明白为什么。Type1Message实现了IMessage和BasicInput,BasicOutput都实现了签名接口。
然而,使用类来代替这个接口可以很好地工作IMessage message =newType1Message();
谢谢!!
https://stackoverflow.com/questions/39428373
复制