gpt4 book ai didi

java - 如何引用子类作为类型参数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:23:33 24 4
gpt4 key购买 nike

有没有办法使用当前类的子类作为泛型类的类型参数?

我不太确定如何暴露我的问题,所以我会举个例子:

例子

我的 Connection对象负责发送和接收某种类型(的子类)Message网络转载(此处仅转载相关部分):

public class Connection<M extends Message> {
public void send(M mes) {
...
}
}

我的 Message object 是一个抽象类,父类(super class)化了通过网络发送的各种消息。

public abstract class Message {
private transient Connection<?> conn;

public void send() {
this.conn.send(this);
}
}

当然,我有几个Message的子类.

问题

我的问题来自 Connection<?> conn Message的属性(property): 在当前状态下,eclipse 告诉我

The method send(capture#7-of ?) in the type Connection< capture#7-of ?> is not applicable for the arguments (Message)

我应该为 Connection 使用什么类型的参数?以便它与 Message 的任何子类兼容?

我尝试了什么

我尝试声明 Message作为:

public abstract class Message<M extends Message<M>> {
private transient Connection<M> conn;
...
}

然后我会:

public class MessageA extends Message<MessageA> {
...
}

作为子类。

但这是一个很大的麻烦(我有很多泛型类使用 Message 的子类作为类型参数)并且它似乎不是处理它的正确方法。

最佳答案

使用 Connection<Message> :

public abstract class Message {
private transient Connection<Message> conn;
...
}

关于java - 如何引用子类作为类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25452832/

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