一丶Class的理解

        /*
* Class类是反射的源头
* 创建一个类,通过编译(javac.exe),生成对应的.class文件,之后使用java.exe加载(JVM的类加载器完成的)此.class文件。
* 此.class文件加载到内存后,就是一个运行时类,存放在缓存区。
* 那么这个运行时类本身就是一个Class的实例。
* 1.每一个运行时类只加载一次;
* 2.有了Class的实例后,可以进行如下操作:
* 1>创建对应的运行时类的对象
* 2>获取对应的运行类的完整结构(属性、方法、构造器、内部类、父类、所在的包、异常、注解、...)
* 3>调用对应的运行时类指定的结构(属性、方法、构造器)
* 4>反射的应用:动态代理
*/

一丶获得Class对象的方法

1)通过类的静态属性class获得

Class clazz = Person.class;

2)通过运行时类的getClass方法获得

        Person person = new Person();
Class clazz = person.getClass();

3)通过Class的静态方法获得

        String className = "hello.Person";//运行时类的完全限定名
Class clazz = Class.forName(className);

4)通过类的加载器获得(了解)

        String className = "hello.Person";//类的完全限定名
ClassLoader classLoader = this.getClass().getClassLoader();
Class clazz = classLoader.loadClass(className);

  

二丶通过Class对象创建对应的运行时类的实例对象

        Class clazz = Person.class;//没有使用泛型,默认是object类型的class对象
Person person = (Person) clazz.newInstance(); //需要强转,该方法默认调用运行时类的无参构造方法,所以类必须有无参构造方法,无参构造方法权限够大 Class<Person> clazz1 = Person.class;//使用了泛型指定是Person类型的class对象
Person person1 = clazz1.newInstance();//不需要强转

最新文章

  1. redis数据类型及使用场景
  2. Vue.js之v-for
  3. 如何从投票的网站的管理后台导出已投票的邀请码数据至Excel,并且稍修改,再导入到现场抽奖软件中?
  4. Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER
  5. 编译hadoop-2.5.2总结
  6. 【转】clang warning 警告清单(备查,建议直接command + F 速查 )
  7. 用C#访问SSRS自动导出SSRS报表
  8. NAT后面的FTP SERVER终极篇
  9. 利用python 获取 windows 组策略
  10. spring mvc使用ClassPathXmlApplicationContext或FileSystemXmlApplicationContext和XmlWebApplicationContext类的操作其中 XmlWebApplicationContext是专为Web工程定制的。
  11. HDU-4628 Pieces 如压力DP
  12. 201521123082 《Java程序设计》第1周学习总结
  13. Xen的虚拟化详解
  14. WPF自学入门(五)WPF依赖属性
  15. 基于java的ES开发
  16. android 请求接口报错 org.apache.http.conn.HttpHostConnectException: Connection to http://192.168.1.90:9090 refused
  17. 006 Spark中的wordcount以及TopK的程序编写
  18. C++设计实现一个不能被继承的类
  19. API gateway 之 kong 安装
  20. CF 1100E Andrew and Taxi(二分答案)

热门文章

  1. matlab学习笔记,图像分块
  2. JavaScript中有时候需要获取当前的时间戳
  3. b树的实现(c++)
  4. Python—numpy.flatnonzero()
  5. PostMan使用教程(1)
  6. Python爬虫之利用正则表达式爬取内涵吧
  7. gulp插件之-----转化es6代码到es5 取消严格模式 remove &quot;use strict&quot; directive
  8. 2018.7.27 wireless charger TX evaluation kit based on STWBC-EP
  9. Java中print()、printf()、println()的区别?
  10. Python collections系列之计数器