gpt4 book ai didi

java - 如何在 Java 中正确创建扩展泛型接口(interface)的有界泛型类

转载 作者:太空宇宙 更新时间:2023-11-04 12:15:47 25 4
gpt4 key购买 nike

我正在尝试实现一个通用的消息系统。根据目标,类必须实现不同的接口(interface)才能由服务器正确反序列化。

为此我有这些接口(interface):

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 的 Message,并且输入类必须是 IBasicInput 的实现,输出类必须是 IBasicOutput 的实现

实例化该类时

IMessage<IBasicInput,IBasicOutput> message = new Type1Message<BasicInput1,BasicOutput1>();

我收到此错误:

Type mismatch: cannot convert from Type1Message to IMessage

我不明白为什么。 Type1Message 实现了 IMessage,BasicInput 和 BasicOutput 都实现了签名接口(interface)。

但是,使用类而不是接口(interface)可以正常工作 IMessage 消息 = new Type1Message();

谢谢!!

最佳答案

Generics types are not inherited.要使其编译:

IMessage<? extends IBasicInput, ? extends IBasicOutput> message =
new Type1Message<BasicInput1, BasicOutput1>();

它有 restrictions ,所以我会这样写:

IMessage<IBasicInput, IBasicOutput> message = new Type1Message<>();

关于java - 如何在 Java 中正确创建扩展泛型接口(interface)的有界泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39428373/

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