请注意,这不是针对界面"的程序。问题类型
我正在避免使用类似' ArrayList&#39 ;;的实现类型。在使用ArrayList时,在PMD中使用接口。我明白为什么会得到它,但在这种情况下我无法使用List,因为列表不可序列化,但是ArrayLists
我有其他选择而不是停用该PMD检查吗?
答案 0 :(得分:0)
问题的一个解决方案是使用multiple type bound的泛型,而不是明确指定ArrayList
。
而不是写作:
public byte[] doSomething(final ArrayList<?> serializableList) {
serializableList.add(getSomeObject()); // List.add()
return SerializationUtils.serialize(serializableList); // Serializable
}
你可以写:
public <T extends List<?> & Serializable> byte[] doSomething(final T serializableList) {
serializableList.add(getSomeObject()); // List.add()
return SerializationUtils.serialize(serializableList); // Serializable
}
这样,您的方法可以将List
和Serializable
(ArrayList
,LinkedList
,...)的所有内容作为参数。