Java反射机制

Java反射机制
什么是反射
解析一个类,找到该类的字节码对象,从而通过字节码对象来产生实例对象的机制。反射被视为动态语言的关键。反射机制允许程序在执行期取得任何类的内部信息,并直接操作任意对象的内部属性及方法。所以反射大大提高了程序的灵活性(例如:动态代理),可以降低代码的耦合性。

反射机制中常用的类
Class—代表类的类
Field—代表属性的类
Method–代表方法的类
Construct—代表构造方法的类
Annotation—代表注解的类
Package—代表包的类

代码实现

public class ClassDemo {
public static void main(String[] args) throws Exception {
	//先获取String的字节码对象
	Class<String> cstring=String.class;
	//获取实例对象
	//newInstance()---默认在调用类的无参构造
	//String str=clz.newInstance();
	
	//通过字节码对象调用到String类的有参构造
	Constructor c=cstring.getConstructor(char[].class);//传入构造方法参数类型的字节码对象
	//获取到的有参构造调用newInstance()传入实际参数构造实例对象
	String str=(String) c.newInstance
			(new char[]{'1','4','a'});
	
	//获取构造方法 
	Constructor c1=cstring.getConstructor(String.class);
	//传参--构建实例对象
	String str1=(String) c1.newInstance("abc");
	
	
	
	//通过Integer的全路径名获取Integer的实例对象并赋值
	//通过Class.forName()获取字节码对象
	Class<Integer> cint=(Class<Integer>) Class.forName("java.lang.Integer");
	//获取有参构造方法 new Integer(int )
	Constructor c2=cint.getConstructor(int.class);
	//传参--构建实例对象
	Integer in=(Integer) c2.newInstance(123);
	System.out.println(in);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值