Java中泛型Class<T>、T与Class<?>、 Obje
一.区别单独的T 代表一个类型(表现形式是一个类名而已) ,而?Class<T>代表这个类型所对应的类(又可以称做类实例、类类型、字节码文件),?Class<?>表示类型不确定的类 Class<T>表示T类型的字节码文件,意思是: Class<T> 相当于Class<T> c=T.class,T? t? new T() ;? 或者Class<T> c= t.getClass();? 通过以上可以获取类名为c.getName(); ? 解释:Class<T> ct=T.class,T? t? new T() ; 与Class c=T.class,T? t? new T() ;? ct泛型指的是ct只能是T的字节码,而c可以是任何类的字节码。所以用ct用法更好 E - Element (在集合中使用,因为集合中存放的是元素) 二、如何创建一个Class<T>类型的实例?????? 就像使用非泛型代码一样,有两种方式:调用方法?Class.forName()?或者使用类常量X.class。????? Class.forName()?被定义为返 回?Class<?>。另一方面,类常量?X.class?被定义为具有类型?Class<X>,所 以?String.class?是Class<String>?类型的。 三、方法中为什么需要<T> T修饰呢泛型的声明,必须在方法的修饰符(public,static,final,abstract等)之后,返回值声明之前。 public static <T> T request2Bean(HttpServletRequest request,Class<T> clazz){} 其中第一个<T>是与传入的参数Class<T>相对应的,相当于返回值的一个泛型,后面的T是返回值类型,代表方法必须返回T类型的(由传入的Class<T>决定) 四、Object类和Class类 Object类和Class类没有直接的关系。 平时看代码时,总是碰到这些即熟悉又陌生的名次,每天都与他们相见,但见面后又似曾没有任何的交集,所以今天我就来认识下这两个江湖侠客的背景: CLASS ??? 在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息 ??? Class对象的生成方式如下: ??? 1.Class.forName("类名字符串") (注意:类名字符串必须是全称,包名+类名); 五、object.getClass()和Object.class的区别 两者的区别如下:? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |