java class的方法_Java Class类常用方法描述

一 生成Class对象的三种方式

1 Class.forName("全路径名")

2  类名.Class

3 实例对象.getClass()

接着看三种方式生成Class对象的区别

packagecom.shangcg.reflect;/***

*

* 三种方式生成Class对象的区别测试

* 说明:测试一、二、三可屏蔽代码分开进行看输出结果

*

*/

public classClassDemo {public static voidmain(String[] args)

{try{/** 测试一 测试类名.class

* 输出为:

* testTypeClass---class com.shangcg.reflect.AnyOneObject 没有执行构造函数没有执行静态块*/Class> testTypeClass = AnyOneObject.class;

System.out.println("testTypeClass---" +testTypeClass);/*测试二 测试Class.forName()

* 输出为:

---静态的参数初始化--- 说明执行静态块

testForName---class com.shangcg.reflect.AnyOneObject*/Class> anyOneTypeForName = Class.forName("com.shangcg.reflect.AnyOneObject");

System.out.println("testForName---" +anyOneTypeForName);/*测试三 测试Object.getClass()

* 输出:

* ---静态的参数初始化--- 执行静态块

----非静态的参数初始化--- 执行非静态块初始化

----构造函数--- 执行构造函数

testGetClass---class com.shangcg.reflect.AnyOneObject*/AnyOneObject testGetClass= newAnyOneObject();

System.out.println("testGetClass---" +testGetClass.getClass());

}catch(Exception e) {

e.printStackTrace();

}

}

}classAnyOneObject {//构造函数

publicAnyOneObject() {

System.out.println("----构造函数---");

}//静态的参数初始化

static{

System.out.println("---静态的参数初始化---");

}//非静态的参数初始化

{

System.out.println("----非静态的参数初始化---");

}

}

结论:

1 类名.class(也称类字面常量) 方式生成Class对象不会初始化的静态块,不会初始化参数,不会调用构造函数

2 Class.forName()方式生成Class对象会初始化类静态块,但不会初始化非静态的代码块,也不调用构造函数

3 Object.getClass()方式生成Class对象会先初始化静态块,接着执行非静态块的初始化,最后调用构造函数

二 java反射(介绍Class类中方法之前,先介绍一下反射)

1 Java反射机制主要功能:

1.在运行时判断任意一个对象所属的类。

2.在运行时构造任意一个类的对象。

3.在运行时判断任意一个类所具有的成员变量和方法。

4.在运行时调用任意一个对象的方法。

2 对反射提供支持的类(反射功能主要由Class对象和java.lang.relflect包中的类提供支持)

Class类:代表一个类,位于java.lang包下。

Field类:代表类的成员变量(成员变量也称为类的属性)。

Method类:代表类的方法。

Constructor类:代表类的构造方法。

Array类:提供了动态创建数组,以及访问数组的元素的静态方法。

三 Class常用方法解释

Class就是普通的一个类,和我们平时写的类没有什么区别,它位于java.lang包下,和java.lang.reflect包下的类共同支持了java的整个反射功能

常用方法列表

1getName():返回String形式的该类的名称。

2 newInstance():根据某个Class对象产生其对应类的实例,它调用的是此类的默认构造方法(没有默认无参构造器会报错)

3 getClassLoader():返回该Class对象对应的类的类加载器。

4 getSuperClass():返回某子类所对应的直接父类所对应的Class对象

5 isArray():判定此Class对象所对应的是否是一个数组对象

6 getComponentType() :如果当前类表示一个数组,则返回表示该数组组件的 Class 对象,否则返回 null。

7 getConstructor(Class[]) :返回当前 Class 对象表示的类的指定的公有构造子对象。

8 getConstructors() :返回当前 Class 对象表示的类的所有公有构造子对象数组。

9 getDeclaredConstructor(Class[]) :返回当前 Class 对象表示的类的指定已说明的一个构造子对象。

10 getDeclaredConstructors() :返回当前 Class 对象表示的类的所有已说明的构造子对象数组。

11 getDeclaredField(String) :返回当前 Class 对象表示的类或接口的指定已说明的一个域对象。

12 getDeclaredFields() :返回当前 Class 对象表示的类或接口的所有已说明的域对象数组。

13 getDeclaredMethod(String, Class[]) :返回当前 Class 对象表示的类或接口的指定已说明的一个方法对象。

14 getDeclaredMethods() :返回 Class 对象表示的类或接口的所有已说明的方法数组。

15 getField(String) :返回当前 Class 对象表示的类或接口的指定的公有成员域对象。

16 getFields() :返回当前 Class 对象表示的类或接口的所有可访问的公有域对象数组。

17 getInterfaces() :返回当前对象表示的类或接口实现的接口。

18 getMethod(String, Class[]) :返回当前 Class 对象表示的类或接口的指定的公有成员方法对象。

19 getMethods() :返回当前 Class 对象表示的类或接口的所有公有成员方法对象数组,包括已声明的和从父类继承的方法。

20 isInstance(Object) :此方法是 Java 语言 instanceof 操作的动态等价方法。

21 isInterface() :判定指定的 Class 对象是否表示一个接口类型

22 isPrimitive() :判定指定的 Class 对象是否表示一个 Java 的基类型。

23 newInstance() :创建类的新实例

参考文章http://www.cnblogs.com/mengdd/archive/2013/01/26/2877972.html

http://blog.csdn.net/ghuilee/article/details/45821537

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值