论坛首页 Java企业应用论坛

关于Class Object的获得方法

浏览 2495 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-02-11  
在使用反射的API时,经常需要取得Class Object类型的值
在这里总结一下取得这种值的几种常用方法:
1.通过getClass()方法取得
这种方式每个Class都具有,因此每个具体的对象都具有该方法
如:
	String str = "abc" ;
	Class c1 = str.getClass() ;
	System.out.println("c1 type name = "+c1.getName()) ;
		
         //注意用int = i 不行,这里需要对象,而不是原生的数据类型
         Integer i = new Integer(3000) ;
	Class c2 = i.getClass() ;
	System.out.println("c2 type name ="+c2.getName()) ;

输出的结果分别是java.lang.String         java.lang.Integer

2.通过getSuperClass()方法
这里应该说是getSuperClass的一种特殊情况吧,也是同样使用于所有Class,注意是Class,通过该方法可以获得给定对象的父类的类型,示例如下:
	String str2 = "abc" ;
	Class c3 = str2.getClass() ;
	Class c4 = c3.getSuperclass() ;
	System.out.println("c4 type name = "+c4.getName()) ;

结果为java.lang.Object

3.通过Class.forName(String msg)来取得msg所代表的对象
在JDBC中我们经常使用Class.forName(DBDRIVER)来获得驱动,这种用法比较常见
其他的象Class.forName("java.lang.String")也是一样的用法

4.通过.class来获得
这主要是适用于具体的Class,这里可以用到原生数据类型如int,前面的getClass()方法则不适用于原生数据类型
用法如下:
	Class c5 = String.class ;
	Class c6 = int.class ;
	Class c7 = int[].class ;	
	Class c8 = Integer.class ;
	System.out.println("c5 type name = "+c5.getName()) ;
	System.out.println("c6 type name = "+c6.getName()) ;
	System.out.println("c7 type name = "+c7.getName()) ;
	System.out.println("c8 type name = "+c8.getName()) ;

输出的结果也分别是相应的类型,这里int属于原生数据类型,是可以用.class这种方法类取得Class类型的,而int[]也属于一种对象,其本身也具有适用.class这种方法取得Class的能力

5.对于原生的数据类型的包装类,通过.TYPE方式
这种适用方式仅限于原生数据类型的包装类,适用方式如下:
	Class c9 = Integer.TYPE ;
	Class c10 = Byte.TYPE ;
	Class c11 = Character.TYPE ;
	System.out.println("c9 type name = "+c9.getName()) ;
	System.out.println("c10 type name = "+c10.getName()) ;
	System.out.println("c11 type name = "+c11.getName()) ;

输出的结果分别是:
c9 type name = int
c10 type name = byte
c11 type name = char
当然,这些原生数据类型的包装类同时也可以用getClass(),.class方法取得相应的Class Object

以上内容希望对大家有所帮助,呵呵
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics