JAVA反射(一)获取Class对象的三种方式及其区别

JAVA有三种方式可以获得Class对象

1、通过类名.class方式获得,Class<?>  cType = ClassName.class;

public class Client {
public static void main(String[] args) {
Class<?> cType1 = Test.class;
}
}
class Test{
static {

                System.out.println("static block");

}

{
System.out.println("dynamic block");
}
}

2、通过Class.forName()方法获得,Class<?>  cType = Class.forName("类全名");

package com.lynstudy;
public class Client {
public static void main(String[] args) {
try {
Class<?> cType2 = Class.forName("com.lynstudy.Test");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
class Test{
static {
System.out.println("static block");
}
{
System.out.println("dynamic block");
}
}

3、通过对象名.getClass()方法获取,Class<?> cType3 = objName.getClass();

package com.lynstudy;
public class Client {
public static void main(String[] args) {
Class<?> cType3 = new Test().getClass();
}
}
class Test{
static {
System.out.println("static block");
}
{
System.out.println("dynamic block");
}
}


总结:三种方式均能够获得Class对象,区别是方法一不执行静态块和动态构造块,方法二执行静态块、不执行动态构造块,方法三需要创建对象,静态块和动态构造块均会执行;

注意:静态块仅在类加载时执行一次,若类已加载便不再重复执行;而动态构造块在每次new对象时均会执行

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值