class="markdown_views prism-atom-one-light">
class ="tags" href="/tags/FanShe.html" title=反射>反射
1. 类 的加载
再用的时候必须先加载 而且加载先加载class 文件 静态是随着类 的加载而加载
2.类 初始化时机
先加载父类 因为害怕子类 用父类
3.类 加载器
4.class ="tags" href="/tags/FanShe.html" title=反射>反射
class ="tags" href="/tags/FanShe.html" title=反射>反射就通过class 文件对象,去使用该文件的成员变量,构造方法,成员方法 class ="tags" href="/tags/FanShe.html" title=反射>反射就是通过访问点class 文件来调用类 的成员变量 成员方法 和构造方法 要像这样使用即必须得到class 文件对象 其实就是得到class 类 的兑现
class 类 :
成员变量 Field 构造方法 Constructor 成员方法 Method 获取class 文件对象的方式
一般怎么选:
A,自己玩 任选一种 第二种较方便
B.开发 第三种
因为第三种是一个字符传 而不是一个具体 的类 名
这样我们就可以吧这样的字符串配置到 配置文件
5. 获取类 的有关数据
A. 获取构造
class="prism language-class ="tags" href="/tags/JAVA.html" title=java>java"> Aclass="token punctuation">. class="token number">1 . getConstructors
class="token keyword">public Constructorclass="token operator">< class="token operator">? class="token operator">> class="token punctuation">[ class="token punctuation">] class="token function">getConstructors class="token punctuation">( class="token punctuation">) 返回公共构造
A.2.getDeclaredConstructor
class="prism language-class ="tags" href="/tags/JAVA.html" title=java>java"> class="token keyword">public Constructorclass="token generics function">class="token punctuation">< Tclass="token punctuation">>
class="token function">getDeclaredConstructor class="token punctuation">( Classclass="token operator">< class="token operator">? class="token operator">> class="token punctuation">. class="token punctuation">. class="token punctuation">. parameterTypesclass="token punctuation">)
Class 对象所表示的类 或接口的指定构造方法
A.3.获取单个构造 ①.getConstructor
class="prism language-class ="tags" href="/tags/JAVA.html" title=java>java">class="token keyword">public Constructorclass="token generics function">class="token punctuation">< Tclass="token punctuation">> getConstructor ()可变参数
返回一个 Constructor 对象,它反映此 Class 对象所表示的类 的指定公共构造方法。
newInstance(Object… initargs) 使用此 Constructor 对象表示的构造方法来创建该构造方法的声明类 的新实例,并用指定的初始化参数初始化该实例。
class="prism language-class ="tags" href="/tags/JAVA.html" title=java>java">Constructor conclass="token operator">= cclass="token punctuation">. class="token function">getConstructor class="token punctuation">( Stringclass="token punctuation">. class="token keyword">class class="token punctuation">, Stringclass="token punctuation">. class="token keyword">class class="token punctuation">, Stringclass="token punctuation">. class="token keyword">class class="token punctuation">) class="token punctuation">; 获取
相应的构造参数 创建对象
class="prism language-class ="tags" href="/tags/JAVA.html" title=java>java">Object objclass="token operator">= conclass="token punctuation">. class="token function">newInstance class="token punctuation">( class="token string">"tjk" class="token punctuation">, class="token string">"男" class="token punctuation">) class="token punctuation">;
class="token comment">//==person p1=new person("tjk","nan");
② newInstance(Object… initargs) 使用此 Constructor 对象表示的构造方法来创建该构造方法的声明类 的新实例,并用指定的初始化参数初始化该实例 返回一个object对象 ③.获取私有构造函数 Con.setAccessible(true) 指定私有构造方法访问权为指定的boolean类 型 使得class ="tags" href="/tags/JAVA.html" title=java>java暂时取消访问检查
B.获取成员变量并使用 B.1 Public类 型的成员变量
B.2 所有的成员变量 B.3给public 类 型的成员变量赋值 B.4给私有成员变量赋值 注意:要给field对象改变其暂时访问权限
C.获取成员方法 C.1 获取父类 和子类 所有的方法 C.2 获取自己的成员方法 C.3 获取单个的方法
class="prism language-class ="tags" href="/tags/JAVA.html" title=java>java">Class class="token class -name">c1 class="token operator">= Classclass="token punctuation">. class="token function">forName class="token punctuation">( class="token string">"com.itcast1.cn.person" class="token punctuation">) class="token punctuation">;
Constructor conclass="token operator">= c1class="token punctuation">. class="token function">getDeclaredConstructor class="token punctuation">( class="token punctuation">) class="token punctuation">;
Object objclass="token operator">= conclass="token punctuation">. class="token function">newInstance class="token punctuation">( class="token punctuation">) class="token punctuation">;
Method mhclass="token operator">= c1class="token punctuation">. class="token function">getMethod class="token punctuation">( class="token string">"show" class="token punctuation">) ;
获取单个的带参的成员方法