gpt4 book ai didi

java - 是否可以编写一个返回 T 的类对象的方法?

转载 作者:行者123 更新时间:2023-11-30 07:39:34 25 4
gpt4 key购买 nike

如果我有一个这样的基类

public abstract class XMLSubscription <T extends XMLMessage>

是否可以在 XMLSubscription 中编写返回 T 的类对象的方法?

我想出的唯一可能的解决方案是让 XMLSubscription 的每个后代都有一个像这样的方法:

public class XMLStatusSubscription extends XMLSubscription<XMLStatusMessage>
{
public Class <XMLStatusMessage> getExpectedMessageType()
{
return XMLStatusMessage.class;
}
}

最佳答案

不幸的是 - 是的,这是由于类型删除 - 如果不在运行时以某种方式提供 Class 对象,则无法返回它。

幸运的是,这通常不会太难。以下是我通常这样做/看到它完成的方式:

public abstract class XMLSubscription <T extends XMLMessage> {
private Class<T> messageType;

protected XMLSubscription(Class<T> messageType) {
this.messageType = messageType;
}

public Class<T> getExpectedMessageType() {
return this.messageType;
}
}

public class XMLStatusSubscription extends XMLSubscription<XMLStatusMessage> {

public XMLStatusSubscription() {
super(XMLStatusMessage.class);
}
}

关于java - 是否可以编写一个返回 T 的类对象的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/361266/

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