我有以下的(这种形式显然是无用)的Java类:Java类型捕获的内部类
public class EntrySet<T> {
public static class Entry<T> {
T obj;
}
private final Set<Entry<T>> set;
public EntrySet() {
this.set = Sets.newHashSet();
}
public Set<Entry<T>> getEntries() {
return set;
}
}
鉴于这个类,下面不编译:
EntrySet<?> entrySet = new EntrySet<SomeClass>();
Set<EntrySet.Entry<?>> entries = entrySet.getEntries();
第二行编译错误“无法从Set<EntrySet.Entry<capture#1-of ?>>
转换为Set<EntrySet.Entry<?>>
”。我无法找到消除此错误的方法,即使在投射或使用助手功能时也是如此。
究竟什么是这里的问题,是有没有办法得到一个干净的编译?
我能做到的最好的是:
EntrySet<?> entrySet = new EntrySet<SomeClass>();
Set<?> tmp = entrySet.getEntries();
Set<EntrySet.Entry<?>> entries = (Set<EntrySet.Entry<?>>) tmp;
这显然是可怕的(即使有相关的警告抑制)。
您是否尝试过EntrySet entrySet = new EntrySet (); ? –
Jerome
这只是一些虚拟代码,以确保问题清楚。这当然会起作用,但就我而言,我所拥有的只是一个'EntrySet >'。 – Carl