黑马程序员技术交流社区

标题: Class<?> [打印本页]

作者: oracleserver    时间: 2012-6-23 23:04
标题: Class<?>
偶然看待一段代码
private class FunctionItemInfo {
  Class<?> ItemClass;
  Class<?> ForSortClass;
  int OrderNumber;}
我想知道其中Class<?>是什么意思?
像ArrayList<String> 这样的泛型还好理解,是一个集合,集合里面是String类型的数据,但class<?>好像不太好理解,也是一个集合吗?还是一个对象?能不能通俗解释下
作者: 朱志辉    时间: 2012-6-23 23:12
Class<?>表示将被建模的类的类型未知。
JDK解释如下:
java.lang.Class<T>
类型参数:
T - 由此 Class 对象建模的类的类型。例如,String.class 的类型是 Class<String>。如果将被建模的类未知,则使用 Class<?>。
作者: 黑马张扬    时间: 2012-6-23 23:13
? 表示Class 对象建模的类的类型。例如,String.class 的类型是 Class<String>。如果将被建模的类未知,则使用 Class<?>
这是在定义一个CLass类的引用  ?号表示可以接受任意的Class类型对象     Class<String>这样定义就只能接受String.class
作者: 张华廷    时间: 2012-6-23 23:22
?表示Class 对象建模的类的类型为任意类型;class(?)表示对象建模的类型未知。
作者: 许涛    时间: 2012-6-23 23:26
?通配符,表示任意类型,可以引用其他各种参数化的类型,?通配符定义的变量通常用于引用
使用时需注意,它不能调用与参数化有关的方法,只能调用与参数化无关的方法,举例说明:
  1. public void printlCollention(Collection<?> collection){
  2. collection.add(E e);                //错误,add方法与类型参数有关
  3. collection.size();                //正确,size方法与类型参数无关
  4. }
复制代码

作者: sbeeqnui1987    时间: 2012-6-24 00:45
Class<?>代表类型,中间的"..."表示无限参数,classes表示该无限参数的名字,就是声明它是类   synchronized 是序列化的意思

<..>中间的可以理解为类型参数,集合中中用的比较多,好处在于不用进行类型转化,避免可能发生的转化异常

*<?>是泛型,一种特殊数据类型,如 List<String> list,这就声明了一个String的数据集合。作为泛型实参表示classes这些对象可以接受任何类型(类类型)

作者: oracleserver    时间: 2012-6-24 22:54
yes,大概明白了。但是还想征求下大伙的意见。  我认为Class<?>是个通配符!就好似sql语句中的模糊查询 select * from teacher where name like '%李%'中的这个百分号(%)把!这里的Class(?)是Class(T)的超类型(类似原始类型 Class和根类型 Object) Class<?>中的问号就代表Object;
作者: 吴小东    时间: 2012-6-25 02:01
顶一下 学习
作者: 游洪波    时间: 2012-6-25 13:21
Class<?>表示对类类型的一个限制,?表示任意的类。也是类建模的类型的表示,如果不知道类类型的情况下都会使用到Class<?>




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2