A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夏晓彤 中级黑马   /  2013-3-7 18:27  /  1967 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 夏晓彤 于 2013-3-7 21:22 编辑

集合上加上泛型,很好理解,ArrayList<Integer> collection2 = new ArrayList<Integer>();集合中存储的数据类型是Intege类型,
Class<String> clazz,这怎么理解,有什么用啊
大家自己看这是Class类型变量,不是类,楼下的都没仔细看

点评

最好把前后语境写出来,或者创造一个简单的语境,这样会让别人更清晰  发表于 2013-3-8 08:04

评分

参与人数 1黑马币 +12 收起 理由
黄玉昆 + 12 赞一个!

查看全部评分

11 个回复

倒序浏览
Class<String> clazz 这个是在类上定义泛型,意思是类里面的成员函数也要定义成string类型的泛型。
class <String> Student
{
        public static <String>void method()
        {
       
        System.out.println(obj);
        }
}
回复 使用道具 举报
Class<String> clazz
表示,clazz这个变量只能接受一个String类型的字节码对象
回复 使用道具 举报
杜超 发表于 2013-3-7 18:44
Class clazz 这个是在类上定义泛型,意思是类里面的成员函数也要定义成string类型的泛型。
class  Student  ...

这是Class对象,不是类,Class大写的,而且定义在类上不是这么写的Class<String> clazz ,泛型加在类名后
回复 使用道具 举报
王亚东 发表于 2013-3-7 18:47
Class clazz
表示,clazz这个变量只能接受一个String类型的字节码对象

那这么说clazz只可以是String.class了?
回复 使用道具 举报
夏晓彤 发表于 2013-3-7 21:26
那这么说clazz只可以是String.class了?

应该和List<String>泛型一样,这个list中只能放String
回复 使用道具 举报
夏晓彤 发表于 2013-3-7 21:21
这是Class对象,不是类,Class大写的,而且定义在类上不是这么写的Class clazz ,泛型加在类名后 ...

看错了,习惯吧class当做了类来看,还以为是泛型定义在类上呢,这和Student<String> stu一样的,stu只能为String类型的
回复 使用道具 举报
杜超 发表于 2013-3-7 23:41
看错了,习惯吧class当做了类来看,还以为是泛型定义在类上呢,这和Student stu一样的,stu只能为String类 ...

stu是Student类型好吧
回复 使用道具 举报
王亚东 发表于 2013-3-7 23:21
应该和List泛型一样,这个list中只能放String

怎么又说道list上去了String类型的字节码对象不就一个吗
回复 使用道具 举报
夏晓彤 发表于 2013-3-8 01:22
怎么又说道list上去了String类型的字节码对象不就一个吗

List<String> list 中只能放String对象,
Class<String> clazz只能接受String字节码对象。
回复 使用道具 举报
夏晓彤 发表于 2013-3-8 01:19
stu是Student类型好吧

stu是Student的引用变量,是指向堆内存中具体对象的引用,因为stu还没有具体的对象或属性,Student 才是一个类型,应该属于学生类型的,stu相当于一个未知数,怎么会是Student的类型呢
回复 使用道具 举报
问题真真的挺好的,没给具体的代码,但愿我的回答是你想要的
在以前的 JDK 中,Class.newInstance() 方法的定义返回 Object,你很可能要将该返回类型强制转换为另一种类型:
  1. class Class {
  2.      Object newInstance();
  3. }
复制代码
但是使用泛型,你定义 Class.newInstance() 方法具有一个更加特定的返回类型:
  1. class Class<T> {
  2.      T newInstance();
  3. }
复制代码
如何创建一个 Class<T> 类型的实例?就像使用非泛型代码一样,有两种方式:调用方法 Class.forName() 或者使用类常量X.class。Class.forName() 被定义为返回 Class<?>。另一方面,类常量 X.class 被定义为具有类型 Class<X>,所以 String.class 是Class<String> 类型的。
Class<String> clazz 这句代码,也就是说clazz是一个String类型的类,因为Class类的实例是一个类。
也不必要在Test.class.newInstance() 强制类型转换为 Test,即Test   t=(Test)Test.class.newInstance()
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马