黑马程序员技术交流社区
标题:
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
?通配符,表示任意类型,可以引用其他各种参数化的类型,?通配符定义的变量通常用于引用
使用时需注意,它不能调用与参数化有关的方法,只能调用与参数化无关的方法,举例说明:
public void printlCollention(Collection<?> collection){
collection.add(E e); //错误,add方法与类型参数有关
collection.size(); //正确,size方法与类型参数无关
}
复制代码
作者:
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