无法将泛型项实例化为Java列表
我有一个与此类似的泛型类
public class NetworkItems<T> {
private Status status;
private T items;
public NetworkItems() {
this.status = Status.FAILURE;
this.items = null;
}
public NetworkItems(Status status, T listItems) {
this.status = status;
this.items = listItems;
}
public NetworkItems(Status status) {
this.status = status;
this.items = null;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public T getItems() {
return items;
}
public void setItems(T items) {
this.items = items;
}
}
我要做的就是检查参数T是否是构造函数中任何类型的列表。如果T是一个列表<&燃气轮机;然后我想将其实例化为一个新列表<&燃气轮机;();
我尝试了以下代码
if (this.items instanceof List) {
this.items = Collections.emptyList();
}
还是这个
this.items = new ArrayList<>();
但我一直收到一个错误,因为我无法给出参数类型。 如果泛型类型T是一个列表,我如何确保用一个新列表实例化这些项
# 1 楼答案
您可以只添加一个类型转换,然后它应该像您所说的那样工作:
# 2 楼答案
为类提供类型为
Supplier<T>
的非可选构造函数参数现在,如果您有一个
NetworkItems
的实例,您总是可以得到一个默认值。例如# 3 楼答案
根据这里的评论和您的原始帖子,似乎
items
是一个集合,不管您的情况如何。您是否更适合做以下工作我知道这对于可以存在一个项的场景并不理想,但是您可以通过将
items
设置为集合来确保这里的类型安全,并坚持可以是一个或多个项的概念