避免使用"数组列表"等实现类型;改用接口(序列化问题)



请注意,这不是"针对接口的程序"类型的问题。

我得到的避免使用" 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
}

这样,您的方法可以作为参数作为参数的所有内容,该参数扩展了ListSerializableArrayListLinkedList,...)。

最新更新