我有一个我需要在另一个方法中使用的Set,但是这个方法将Set<Serializable>
作为输入。
这是最好的方法吗?任何可以接受的建议。
答案 0 :(得分:3)
制作套装的副本:
Set<Serializable> serializableSet = new HashSet<Serializable>(yourSet);
(如果您需要保留订单,请使用LinkedHashSet
。)
这假设yourSet
的元素当然是实现Serializable
。
答案 1 :(得分:1)
有两个警告。但它确实有效。
void anotherMethod(Set<Serializable> arg) {
System.out.println("called");
}
public void myMethod() {
Set set = new HashSet<>(); // Set is a raw type.
// References to generic type Set<E>
// should be parameterized
anotherMethod(set); // Type safety:
// The expression of type Set needs unchecked
// conversion to conform to Set<Serializable>
}
如果set
是Set<Object>
,那么您可以致电anotherMethod((Set)set)
。