如何获取Class类对象

 Java反射(Reflection)是一种新的操作类中成员变量、构造方法和普通方法的机制。

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

@@基本数据类型有:byte,short,int,long.float,double,boolean ,char。

@@Java提供八种包装类:Byte,Short,integer,Long,Float,Double,Boolean,Character.

##Class类特点:点开Class可以看到:被finally修饰,类在Java.lang 包中,是Serializable接口的实现类,而且这个类的构造方法被private修饰,那么不能通过new 来创建该类的对象。下面介绍六种方法来创建此对象获取到Class类实例化对象

 先创建 了Stu类:


package wo;

public class Stu {

	String name;

	public Stu() {//无参构造方法
	}

	public Stu(String name) {//有参构造方法
		this.name = name;
	}

	public void dohomework() {//普通方法
		System.out.println(name + "正在做作业");
	}

}

 再构建一个方法Test为创建对象:

下面获取了Stu 类中的信息而且用了方法一:使用Class.forName();括号中是(“类包名.类名”)


package wo;

public class Test {

	public static void main(String[] args) {
		Stu s = new Stu();// 调用Stu中无参构造方法
		s.name = "tom";// 调用Stu中属性
		s.dohomework();// 调用普通方法
		Class clazz = null;
		try {
			clazz = Class.forName("wo.Test");
			System.out.println(clazz.getName());
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
}
tom正在做作业
wo.Test

 

方法二用类名.class获取Class类实例:

package wo;

public class Test {

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

方法三:在已经创建引用类型的对象前提下,可以通过调用对象.getClass():

public class Test {

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

方法四:如果是基本数据类型,则可以通过包装类.TYPE获取Class类实例,当然,也可以通过基本数据类型.class获取Class类实例:

public class Test {

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

 结果如下显示当用包装类.TYPE时,仅是输出数据类型,要是包装类型.class,基本数据类型.class时是输出包名.包装类型或数据类型。

java.lang.Character
java.lang.String
int

 方法五:通过元素类型[].class可以获取数组所对应的Class类实例:

public class Test {

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

方法六:通过调用某个类的Class实例的getSuperClass()方法可以获取该类超类的Class实例简单来说是 某个类父类对应class对象:

public class Test {

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

结果:[Ljava.lang.String;明显是数组类型

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值