泛型
泛型只在编译时期有效,编译后的字节码文件中不存在有泛型信息!
- 帮助开发者写出正确的代码。
- 虚拟机的向下兼容问题
package com.situ.day22;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class GenericDemo {
@Test
public void test1(){
List list = new ArrayList<>();
list.add("java");
list.add(1);
String str = (String)list.get(0);
System.out.println(str);
}
@Test
public void test2(){
List<String> list = new ArrayList<>();
list.add("java");
String s = list.get(0);
}
public void test3(){
List<Object> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
}
@Test
public void test5(){
List<String> list1 = new ArrayList<String>(); //创建泛型
List<Integer> list2 = new ArrayList<Integer>();
System.out.println(list1.getClass() == list2.getClass());
// List<String>.class List<Integer>.class
// List.class
}
}
反射
package com.situ.day22.lianxi;
import com.situ.day22.Student;
import org.junit.Test;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class test1 {
@Test
public void test2() throws ClassNotFoundException {
// Class.forName(完整的包名加类名)
Class clazz1 = Class.forName("com.situ.day22.Student");
//2.对象。getClass()
Student student = new Student();
Class clazz2 = student.getClass();
//3.类名。class
Class clazz3 = Student.class;
System.out.println(clazz1 == clazz2);//true
System.out.println(clazz2 == clazz3);//true
System.out.println(clazz1 == clazz3);//true
}
@Test
public void testConstrutor() throws NoSuchMethodException {
Class clazz = Student.class;
Constructor[] constructors = clazz.getDeclaredConstructors();
for (Constructor constructor : constructors) {
//System.out.println(constructor);
//System.out.println(constructor.getName());
System.out.println(constructor.getModifiers());
}
}
@Test
public void testConstructr2() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Class clazz = Student.class;
Constructor constructor = clazz.getDeclaredConstructor(Integer.class, String.class, Integer.class, String.class);
constructor.setAccessible(true);
Student student = (Student)constructor.newInstance(1, "zhangsan", 23, "男");
System.out.println(student);
}
}