标签:lang 反射 Java 对象 泛型 java Class 加载
一、Class类
1. 我们创建的类也是对象,即类本身是java.lang.Class类的实例对象
2. java.lang.Class类的构造方法是私有的,所以类不需要new出来
3. java.lang.Class类的实例对象有三种表示方式:
Class<?> c=A.class; // 任何一个类都有一个隐藏的静态成员变量class
Class<?> c=a.getClass(); // 已知该类的对象,获取类
Class<?> c=Class.forName("类的全名")
4. 可以通过得到的Class创建该类的对象
A a=(A)c.newInstance();
二、类加载
1. 用new去创建对象的类,是静态加载类,编译时就需要加载所有可能使用到的类
2. 用Class<?> c=Class.forName("类的全名")得到的类,是动态加载类,运行时才会加载
3. 功能性的类尽量使用动态加载
三、获取类型信息和Class类的基本API
1. 获取类型:Class c=String.class;
2. c.getName();
3. Method[] m=c.getMethods(); m.invoke();
4. Field[] f=c.getDelaredFields();
四、集合泛型的本质
1. 集合中的泛型,是用于防止错误类型的元素输入的,只在编译阶段有效
2. 在编译之后运行期间,JVM会将集合中的对象都看作基类,而对象的实际类型信息就丢失了,即泛型擦除
3. 所以用反射可以在泛型集合中加入类型不对的元素,例如List<String>中,加入add(1),就可以在一个list里存储多种不同的类型
标签:lang,反射,Java,对象,泛型,java,Class,加载 来源: https://www.cnblogs.com/june0816/p/6774529.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。