【发布时间】:2016-02-14 09:07:18
【问题描述】:
在擦除和类型推断方面存在一些问题。我有以下类层次结构,看起来不是很复杂:
public class Foo<T> {
}
public class Bar<T> {
private final Class<T> clazz;
public Bar(Class<T> clazz) {
this.clazz = clazz;
}
}
而我正在尝试做的是这样的事情:
Bar<Foo<?>> bar = new Bar<>(Foo.class);
当然,这不起作用,因为 Foo 不完全是 Foo<?>。问题是如何构建这样的 Bar?我需要的正是Bar<Foo<?>>,而不是Bar<Foo>,因为有一种方法只接受Bar<Foo<?>> 作为参数。欣赏想法。
【问题讨论】:
-
您可以将
Foo.class转换为Class<Foo<?>>,这可能足以满足您的目的。 (您不能实际上仅使用Class对象来表示不同的泛型。)
标签: java generics type-inference erasure