堆污染
- 单一个方法既使用泛型的时候也使用可变参数,此时容易导致堆污染
- 如在Arrays中的aList方法

public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}

改方法报了一个警告(类型安全问题:可变参数a可能导致堆污染)
Type safety: Potential heap pollution via varargs parameter a

  • 在Java7中如下图
    通过 @SafeVarargs的注解来抑制编译器的警告

  • 将此方法复制到自定义类中就出现了警告

更多推荐

Java中泛型转换引起的堆污染