这里有很多答案,可以解释为什么这段代码不起作用。虽然您可能会争论设计并提出使用继承的解决方案,但我仍然希望看到编译错误是否能够以不同方式解决。
由于两个转换函数是相同的,只是迭代一个泛型集,我想必须有一个选项如何统一它们。知道怎么做吗?
此代码不会编译:方法转换(Set)与类型示例
中的另一种方法具有相同的擦除转换(Set)public class Example {
public static Set<A> transform(Set<A> items) {
Set<A> itemsSet = new HashSet<A>();
for (A item : items) {
itemsSet.add(process(item));
}
return itemsSet;
}
public static Set<B> transform(Set<B> items) {
Set<B> itemsSet = new HashSet<B>();
for (B item : items) {
itemsSet.add(process(item));
}
return itemsSet;
}
public static A process(A v) {
//Some code here
return v;
}
public static B process(B v) {
//Some different code here
return v;
}
class A{}
class B{}
}
答案 0 :(得分:0)
没有。因为在运行时,两个泛型都会被删除,而您只剩下java.lang.Object
。你可以用不同的方式命名你的方法。