java反射专题一
一丶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();//不需要强转
java反射专题一的更多相关文章
- java反射专题三
一丶调用运行时类中指定的属性 Class clazz = Person.class; //1.获取指定的属性 Field name = clazz.getField("name") ...
- java反射专题二
一丶Class中常用方法详解 1)getFields() 只能获取到运行时类中及其父类中声明为public的属性 2)getDeclaredFields() 获取运行时类本身声明的所有属性 3)get ...
- Java反射机制专题
·Java Reflection Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方 ...
- Java基础专题
Java后端知识点汇总——Java基础专题 全套Java知识点汇总目录,见https://www.cnblogs.com/autism-dong/p/11831922.html 1.解释下什么是面向对 ...
- 第28章 java反射机制
java反射机制 1.类加载机制 1.1.jvm和类 运行Java程序:java 带有main方法的类名 之后java会启动jvm,并加载字节码(字节码就是一个类在内存空间的状态) 当调用java命令 ...
- Java反射机制
Java反射机制 一:什么事反射机制 简单地说,就是程序运行时能够通过反射的到类的所有信息,只需要获得类名,方法名,属性名. 二:为什么要用反射: 静态编译:在编译时确定类型,绑定对象,即通过 ...
- java反射(基础了解)
package cn.itcast_01; /** *Person类 */ public class Person { /** 姓名 */ private String name; ...
- java基础知识(十一)java反射机制(上)
java.lang.Class类详解 java Class类详解 一.class类 Class类是java语言定义的特定类的实现,在java中每个类都有一个相应的Class对象,以便java程序运行时 ...
- java基础知识(十一)java反射机制(下)
1.什么是反射机制? java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象都能够调用他的属性和方法,这种动态获取属性和方法的功能称为java的反射机制. ...
随机推荐
- 关于es集群转换为单点后,主分片丢失的问题(健康检测状态为red)
正在找解决方案 前后情况是, 之前是es双节点,之后更改为单节点,data中的数据都是双节点的,也许导致了单节点的状态不正常,删除了data目录下内容后,重启es,好了,这是测试环境,所以这么干的
- dataframe to sql
使用pandas的to_sql时,还涉及到一些sql数据库的操作 在网上找到一段代码,很方便使用.来源:blog.csdn.net/qcyfred/article/details/78085243?l ...
- keystone cache
http://docs.openstack.org/juno/config-reference/content/section_keystone.conf.html http://docs.opens ...
- 智课雅思词汇---十六、前缀hyper和hypo是反义词
智课雅思词汇---十六.前缀hyper和hypo是反义词 一.总结 一句话总结: hypertension 过度紧张:高血压(hyper+tension紧张) hypotension 低血压 1.ep ...
- hzau 1202 GCD(矩阵快速幂)
1202: GCD Time Limit: 1 Sec Memory Limit: 1280 MBSubmit: 201 Solved: 31[Submit][Status][Web Board] ...
- IntelliJ IDEA创建Maven+SSM+Tomcat+Git项目【全程详解】
记录一下整个创建项目的过程,其中包括: Maven 项目创建: SSM配置文件: Tomcat配置: Git配置: Git忽略文件Ignore配置: 图文讲解,通俗易懂,易上手. 一.创建Maven ...
- 经典SQL语句(转载)
一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...
- Hibernate Validator验证框架中@NotEmpty、@NotBlank、@NotNull 的区别
Hibernate Validator验证框架中@NotEmpty.@NotBlank.@NotNull的主要使用情况 @NotEmpty 用在集合类上面 @NotBlank 用在String上 ...
- Nhibernate系列学习之(五) 存储过程
NHibernate也是能够操作存储过程的,不过第一次配置可能会碰到很多错误. 一.删除 首先,我们新建一个存储过程如下: CREATE PROC DeletePerson @Id int AS DE ...
- C++ const 常量和常指针
常量,该指针所指向的值为只读 ; const int * p = &a; 常指针,该指针的值为只读,不可再指向其他地址 const * const p = &a; 常值,常指针 con ...