泛型的设计就是避免楼主的这种行为产生。但是泛型只是编译期检查,运行时不做检查,所以可以通过反射的方式来绕过泛型检查,具体代码如下:
- public static void main(String[] args) throws Exception {
- LinkedList<String> link = new LinkedList<String>();
- String s1 = "we";
- String s2 = "they";
- int s3 = 10;
- link.add(s1);
- link.add(s2);
- //link.add(s3); 编译报错 无法运行
- // 反射绕过泛型检查
-
- // 首先取得LinkedList类的字节码文件
- Class clazz = Class.forName("java.util.LinkedList");
- // 获取LinkedList类的add方法,并将其参数设置为Object(可添加任意对象,或者设置成String也可以,根据题目要求)
- Method m = clazz.getMethod("add", Object.class);
- m.invoke(link, "这是一个字符串");
-
- System.out.println(link);
- }
复制代码
希望多来一些网络,反射,IO流,正则表达式的题目! |