java.lang.Class

一、Class类是什么

        注:引子java.lang.Class注释:
        该类的实例Class表示正在运行的Java应用程序的类和接口,包括枚举(枚举相当于类)和注解(注解相当于接口) 每个数组也属于被反射作为一类Class由与相同的元素类型和尺寸的数目的所有阵列共享对象。 原始Java类型( boolean , byte , char , short , int , long , float ,及double ),以及关键字void也表示为Class对象。
        Class没有公共构造函数。 相反, Class对象由Java虚拟机的类加载并通过调用自动构造defineClass的类加载器方法。
以下示例使用一Class对象来打印的对象的类名:
void printClassName(Object obj) {
System.out.println("The class of " + obj +
" is " + obj.getClass().getName());
}

        也可以得到Class对象使用类文字命名类型(或无效)。 Java™语言规范的详情请参见第15.8.2。 例如:
System.out.println("The name of class Foo is: "+Foo.class.getName());

二、Class类常用的方法

Class类是反射中的核心类,它有如下的方法:
    获取类中的属性:
      - getFields(): 获取类中public类型的属性
      - getField(String name): 获取类特定的方法,name参数指定了属性的名称
      - getDeclaredFields(): 获取类中所有的属性(public、protected、default、private),但不包括继承的属性。
      - getDeclaredField(String name): 获取类特定的方法,name参数指定了属性的名称

获取类中的构造函数:
      - getConstructors():获取类中的公共方法
      - getConstructor(Class[] params): 获取类的特定构造方法,params参数指定构造方法的参数类型
      - getDeclaredConstructors(): 获取类中所有的构造方法(public、protected、default、private)
      - getDeclaredConstructor(Class[] params): 获取类的特定构造方法,params参数指定构造方法的参数类型

获取类中的方法:
      - getMethods(): 获得类的public类型的方法
      - getMethod(String name, Class[] params): 获得类的特定方法,name参数指定方法的名字,params参数指定方法的参数类型
      - getDeclaredMethods(): 获取类中所有的方法(public、protected、default、private)
      - getDeclaredMethod(String name, Class[] params): 获得类的特定方法,name参数指定方法的名字,params参数指定方法的参数类型

其它重要方法:
      - newInstance(): 通过类的不带参数 的构造方法创建这个类的一个对象
      - forName(String className): 获取className参数指定的类的class对象
      - forName(String className,boolean initialize,ClassLoader): 使用指定的类加载器获取className参数指定的类的class对象
      - getClassLoader(): 获取类加载器
      - getName(): 获取类名
      - getPackage(): 获取类所在的包名

三、获取Class对象的三种方法

       第一种: 调用Class类的静态方法forName,比如 Class.forName(“java.lang.String”)
  第二种: 使用类的.class语法,比如 : Class cls = String.class
  第三种: 调用对象的getClass方法, 比如:String str = “123”; Class cls = str.getClass();
          注:在java.lang.Object类中定义了getClass()方法,因此对于任意一个Java对象,都可以通过此方法获得对象的类型)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值