如何获取Class类对象

反射系列传送门

              如何获取Class类对象(本篇)

              详述反射中的构造方法

              详述反射中的普通方法

              详述反射中的属性


什么是Class类

Class类是Java 反射机制的入口,封装了一个类或接口的运行时信息,通过调用Class类的方法可以获取这些信息。

如果将类看作一个对象,那么这个“对象”的抽象化就是Class。

Class类特点

  • 该类在java.lang包中,因此在使用时不必引包
  • 该类被final所修饰,即该类不可以被子类继承
  • 该类实现了Serializable接口
  • 该类的构造方法被private所修饰,即不能通过new关键字创建该类的对象

 如何获取Class类对象 

现有学生类如下:

public class Student {

    String name;
    Integer id;
	
    public Student() {
		
    }
    public Student(String name) {
	this.name=name;
    }
    private Student(Integer id) {//Integer为int类型的包装类
        this.id=id;
    }
    public void sleep() {
	System.out.println(name+" go to sleep ");
    }
    public void say() {
	System.out.println("学号为:"+id);
    }
}

1、通过Class.forName("包名.类名")获取Class类实例

package test;

public class Test {

    public static void main(String[] args) {
	Class clazz=null;
	try {
	    clazz=Class.forName("test.Student");
	    System.out.println(clazz.getName());//输出获取的Class类对象clazz指向类的名称
	} catch (ClassNotFoundException e) {
	    e.printStackTrace();
	}
    }
}

2、通过使用类名.class获取Class类实例

package test;

public class Test {

    public static void main(String[] args) {
	Class clazz=null;
	clazz=Student.class;//使用类名获取Class类对象
	System.out.println(clazz.getName());//输出获取的Class类对象clazz指向类的名称
    }
}

3、通过使用对象.getClass()获取Class类实例

package test;

public class Test {

    public static void main(String[] args) {
	Class clazz=null;
	clazz= new Student().getClass();//创建Student类的对象,在使用getClass()方法获取其对应Class类对象
	System.out.println(clazz.getName());//输出获取的Class类对象clazz指向类的名称
    }
}

4、获取基本数据类型对应的Class的对象:包装类.TYPE

package test;

public class Test {

    public static void main(String[] args) {
	Class clazz=null;
	clazz = Integer.TYPE;
	System.out.println(clazz.getName());
    }
}

注意:如果错误使用成包装类.class,那么获取的是包装类对应的Class对象。

5、获取数组类型对应class:元素类型 [ ] .class

package test;

public class Test {

    public static void main(String[] args) {
	Class clazz=null;
	clazz = String[].class;
	System.out.println(clazz.getName());
    }
}

6、获取某个类超类所对应的Class对象:类的Class实例.getSuperClass()

package test;

public class Test {

    public static void main(String[] args) {
	Class clazz=null;
	clazz = Student.class.getSuperclass();
	System.out.println(clazz.getName());
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值