gpt4 book ai didi

java - 无法从 Set 转换为 Set>

转载 作者:行者123 更新时间:2023-12-02 02:31:51 28 4
gpt4 key购买 nike

这是我的代码:

Set<MyObject<?, ?>> mySet = getSetOf(MyObject.class);

public <T> Set<T> getSetOf(Class<T> setClass) {
Set<T> set = new HashSet<>();
// ...
return set;
}

所以基本上我想编写一个返回一组特定类类型的对象的方法。编译器提示 getSetOf(Class) 的返回类型与mySet的声明不一样。如果我更改 mySet 的声明至Set<MyObject> mySet然后它就快乐了。但我遵循的做法是不使用原始类型来声明变量,因此将其参数化。

如何解决这个问题?

最佳答案

如果Class<T>参数纯粹是为了 T 的类型信息,那么就没有必要了。您可以返回通用 Set<T> ,它会找出什么 T基于类型推断。

Set<MyObject<?,?>> mySet = getSet();

public <T> Set<T> getSet() {
Set<T> set = new HashSet<>();
// ...
return set;
}

class MyObject<T,U> {}

Ideone Demo

如果您确实需要 Class<T>出于反射目的,将其更改为 Class<?>这样它就不会影响 T 的推断类型.

关于java - 无法从 Set<MyObject> 转换为 Set<MyObject<?,?>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46965729/

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