Java 获取无法从集合转换<;MyObject>;设置<;MyObject<&燃气轮机&燃气轮机;
这是我的密码:Java 获取无法从集合转换<;MyObject>;设置<;MyObject<&燃气轮机&燃气轮机;,java,generics,type-erasure,Java,Generics,Type Erasure,这是我的密码: Set<MyObject<?, ?>> mySet = getSetOf(MyObject.class); public <T> Set<T> getSetOf(Class<T> setClass) { Set<T> set = new HashSet<>(); // ... return set; } Set如果Class参数纯粹用于T的类型信息,那么它是不必要的。您
Set<MyObject<?, ?>> mySet = getSetOf(MyObject.class);
public <T> Set<T> getSetOf(Class<T> setClass) {
Set<T> set = new HashSet<>();
// ...
return set;
}
Set如果Class
参数纯粹用于T
的类型信息,那么它是不必要的。您可以返回一个泛型集
,它将根据类型推断确定T
是什么
Set<MyObject<?,?>> mySet = getSet();
public <T> Set<T> getSet() {
Set<T> set = new HashSet<>();
// ...
return set;
}
class MyObject<T,U> {}
设置
,这样它就不会影响t
的推断类型。如果类
参数仅用于t
的类型信息,那么就没有必要了。您可以返回一个泛型集
,它将根据类型推断确定T
是什么
Set<MyObject<?,?>> mySet = getSet();
public <T> Set<T> getSet() {
Set<T> set = new HashSet<>();
// ...
return set;
}
class MyObject<T,U> {}
设置
,这样就不会影响t
的推断类型设置
不是原始类型。。。告诉我们MyObject
类是什么样子的。@alfasin说Set
不是原始类型…:抱歉MyObject
是一个接受两个参数的泛型类(上面没有显示)。这样的方法完全没有意义。@alfasin说,告诉我们MyObject
类看起来是什么样子:抱歉,这不重要,也不是这个问题的重点。你可以用List
替换MyObject
,我的问题仍然有效。如果你能提供一个最简单的具体例子来说明你在说什么,我很乐意进一步深入研究。现在我很清楚你在做什么/试图做什么,无论是使用对象还是getSetOf()
Set
都不是原始类型。。。告诉我们MyObject
类是什么样子的。@alfasin说Set
不是原始类型…:抱歉MyObject
是一个接受两个参数的泛型类(上面没有显示)。这样的方法完全没有意义。@alfasin说,告诉我们MyObject
类看起来是什么样子:抱歉,这不重要,也不是这个问题的重点。你可以用List
替换MyObject
,我的问题仍然有效。如果你能提供一个最简单的具体例子来说明你在说什么,我很乐意进一步深入研究。现在我很清楚你在做什么/试图做什么,无论是用你的对象还是用getSetOf()
。虽然这是真的,但我认为这样做没有任何附加价值:为了将MyObject
类型的对象添加到集合中,你必须将它们强制转换为t
。@4castle wait,当我使用getSetOf(MyObject.class).forEach(o->o.someMethod())
时,有一个问题是它无法识别o
是MyObject
?@user1589188类型的,只有以某种方式提供T
的类型,类型推断才会起作用。赋值给变量是一种方法。@user1589188如果我知道为什么需要类
参数,我觉得我可以为您提供更多帮助。您是否使用它来创建MyObject
的实例?如果是这样,最好使用Supplier
@4castle将方法引用传递给构造函数作为参数,谢谢。正如您所说,我正在使用反射来收集类对象实例成员字段中的一组特定类对象。虽然这是事实,但我认为这样做没有任何附加值:为了将类型为MyObject
的对象添加到集合中,您必须将它们强制转换为t
…@4castle wait,当我使用getSetOf(MyObject.class).forEach(o->o.someMethod())
时,有一个问题是它无法识别o
是MyObject
?@user1589188类型的,只有以某种方式提供T
的类型,类型推断才会起作用。赋值给变量是一种方法。@user1589188如果我知道为什么需要类
参数,我觉得我可以为您提供更多帮助。您是否使用它来创建MyObject
的实例?如果是这样,最好使用Supplier
@4castle将方法引用传递给构造函数作为参数,谢谢。正如您所说,我使用反射在类对象实例的成员字段中收集一组特定的类对象。