透彻分析反射的基础---class类

反射的基石---class

  反射就是把java类中的各种成分映射成相应的java类.例如:一个java类中用一个class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等信息也用一个个的java类来表示,就像汽车是一个类,汽车中的 发动机,变速箱等等也是一个类.表示java类的class类显然要提供一系列的方法来获取其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,他们是field,method,contructor,package等.

 

java程序中的各个java类属于同一个类事物,描述这类事物的java类名就是class.
什么是字节码:当在源程序中用到了person这个类的时候,首先将这个类的class编译的二级制编码加载到内存中来,然后再用这个二进制将它复制成一个个对象来.
如何得到各个字节码对应的实例对象或者说是获取class类
一共有三种方式:
1.类名.class,例如:System.class
2.对象.class,例如new Date().getClass
3.Class.forName("类名");例如:Class.forName("java.lang.String");

public class ReflectDemo {
	public static void main(String[] args) throws ClassNotFoundException {
		// 方式1
		Person p = new Person();
		Class c = p.getClass();

		Person p2 = new Person();
		Class c2 = p2.getClass();

		System.out.println(p == p2);// false
		System.out.println(c == c2);// true

		// 方式2
		Class c3 = Person.class;
		// int.class;
		// String.class;
		System.out.println(c == c3);

		// 方式3
		// ClassNotFoundException
		Class c4 = Class.forName("Reflect.Person");
		System.out.println(c == c4);
	}
}

总结:

  要想解剖一个类,必须先获取到该类的字节码文件对象,而解剖是用的就是class类中的方法,class文件在反射中起到了基石的作用.



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值