java反射简介

反射类 -- Class
由来:
根据万物皆对象的思想,类本身也可以被看作是一个对象,因此对java中的所有类进行了封装,
抽取出了一个代表类的类:Class。
java中所有类的共性:1.方法 2.变量  6.构造方法等等
------------------------------------------------------------------------------
类  类 --- Class
字段类 --- Field  ----- 提供了获取该字段的名称,权限修饰符,返回值类型等
方法类 --- Method
构造方法类 --- Constructor
---------------------------------------------------------------------------------
类加载器:将类放进内存中的东西
Class:
1.java.lang包下,被final修饰
2.没有构造方法,Class对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。
3.java中的8大基本数据类型和关键字void都可以表示为Class对象
4.每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象
5.

怎么获取某个(Person)类的Class类的对象??
1.Class a = Class.forName(包名.Person);
  获取的class对象a可以看做是一个类(Person)的代理,通过代理对象a可以获得被代理对象person的所有信息。
  包括获取Person类的:名称,包名,所有字段,所有方法。
2.Class b = new Person().getClass();
3.Class c = Person.class;
----------------------------------------------------------------------------------
面试题:获取Person类的代理类Class类对象的方式有几种,这几种方式有什么区别?
答:有三种方式,区别为:
    前两种会导致Person类被加载,后一种不会导致Person类被加载。
三种获取代理对象的方式建议使用第三种,即类名.class的方式,因为他是一个字面常量,效率高,
并且使用简洁不抛异常,但是特殊情况如果需要被代理类的加载,就必须使用前两种的其中一种,
例如JDBC中加载驱动时需要类的加载,所以使用Class.forName(XXXX.driver);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智玲君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值