【发布时间】:2021-03-27 12:01:25
【问题描述】:
当我想在泛型类中使用泛型类的类时,我收到了类型安全警告,下面的代码将更好地解释:
class A<U, V> {
private class B<W, X> {
X x;
W w;
}
public A() {
B<U, V> c = C.someMethod(B.class); // warning here
}
static class C {
public static <T> T someMethod(Class<T> clazz) {
return null;
}
}
}
有什么办法解决这个问题吗?
请注意,B 类是私有的。
【问题讨论】:
-
您可以将函数声明为
public static <T, X, Y> T<X, Y> someMethod,然后类型推断将完成这项工作,但这只是转移了您将如何从B.class构建B<U, V>实例的问题.这将需要转换为T<X, Y>,这将具有相同类型的安全警告。 -
除了抑制警告外,您无能为力。类文字将具有原始类型。
标签: java class generics nested generic-type-argument