java反射专题一
2024-09-04 16:14:52
一丶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();//不需要强转
最新文章
- redis数据类型及使用场景
- Vue.js之v-for
- 如何从投票的网站的管理后台导出已投票的邀请码数据至Excel,并且稍修改,再导入到现场抽奖软件中?
- Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER
- 编译hadoop-2.5.2总结
- 【转】clang warning 警告清单(备查,建议直接command + F 速查 )
- 用C#访问SSRS自动导出SSRS报表
- NAT后面的FTP SERVER终极篇
- 利用python 获取 windows 组策略
- spring mvc使用ClassPathXmlApplicationContext或FileSystemXmlApplicationContext和XmlWebApplicationContext类的操作其中 XmlWebApplicationContext是专为Web工程定制的。
- HDU-4628 Pieces 如压力DP
- 201521123082 《Java程序设计》第1周学习总结
- Xen的虚拟化详解
- WPF自学入门(五)WPF依赖属性
- 基于java的ES开发
- android 请求接口报错 org.apache.http.conn.HttpHostConnectException: Connection to http://192.168.1.90:9090 refused
- 006 Spark中的wordcount以及TopK的程序编写
- C++设计实现一个不能被继承的类
- API gateway 之 kong 安装
- CF 1100E Andrew and Taxi(二分答案)
热门文章
- matlab学习笔记,图像分块
- JavaScript中有时候需要获取当前的时间戳
- b树的实现(c++)
- Python—numpy.flatnonzero()
- PostMan使用教程(1)
- Python爬虫之利用正则表达式爬取内涵吧
- gulp插件之-----转化es6代码到es5 取消严格模式 remove ";use strict"; directive
- 2018.7.27 wireless charger TX evaluation kit based on STWBC-EP
- Java中print()、printf()、println()的区别?
- Python collections系列之计数器