避免使用类似' ArrayList&#39 ;;的实现类型。改为使用界面(序列化问题)

时间:2017-02-14 09:39:24

标签: java list serialization arraylist interface

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

我正在避免使用类似' ArrayList&#39 ;;的实现类型。在使用ArrayList时,在PMD中使用接口。我明白为什么会得到它,但在这种情况下我无法使用List,因为列表不可序列化,但是ArrayLists

我有其他选择而不是停用该PMD检查吗?

1 个答案:

答案 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
}

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