请注意,这不是"针对接口的程序"类型的问题。 我得到的避免使用" arrayList"之类的实现类型;使用阵列列表时,请改用PMD中的接口。我知道为什么要得到它,但是在这种情况下,我无法使用列表,因为列表不可序列化,但是ArrayLists是 我有其他选择,而不是停用PMD检查?
解决您问题的一种解决方案是使用具有多种类型绑定的仿制药,而不是明确指定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
,...)。