java @SafeVarargs
阅读数:41 评论数:0
跳转到新版页面分类
python/Java
正文
一、概述
@SafeVarargs 在 JDK7 中引入,是告诉编译器,在可变长参数中的泛型是类型安全的;
可变长参数是使用数组存储的,而数组和泛型不能很好的混合使用;
@SafeVarargs 注解可以用于构造方法;
@SafeVarargs 注解可以用于 static 或 final 方法;
二、示例
public class SafeVarargsAnnotationDemo {
/**
* 此方法实际上并不安全,不使用此注解,编译时会告警
*/
@SafeVarargs
static void wrongMethod(List<String>... stringLists) {
Object[] array = stringLists;
List<Integer> tmpList = Arrays.asList(42);
array[0] = tmpList; // 语法错误,但是编译不告警
String s = stringLists[0].get(0); // 运行时报 ClassCastException
}
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
List<String> list2 = new ArrayList<>();
list.add("1");
list.add("2");
wrongMethod(list, list2);
}
}