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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© oracleserver 初级黑马   /  2012-6-23 23:04  /  2603 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

偶然看待一段代码
private class FunctionItemInfo {
  Class<?> ItemClass;
  Class<?> ForSortClass;
  int OrderNumber;}
我想知道其中Class<?>是什么意思?
像ArrayList<String> 这样的泛型还好理解,是一个集合,集合里面是String类型的数据,但class<?>好像不太好理解,也是一个集合吗?还是一个对象?能不能通俗解释下

8 个回复

倒序浏览
Class<?>表示将被建模的类的类型未知。
JDK解释如下:
java.lang.Class<T>
类型参数:
T - 由此 Class 对象建模的类的类型。例如,String.class 的类型是 Class<String>。如果将被建模的类未知,则使用 Class<?>。
回复 使用道具 举报
? 表示Class 对象建模的类的类型。例如,String.class 的类型是 Class<String>。如果将被建模的类未知,则使用 Class<?>
这是在定义一个CLass类的引用  ?号表示可以接受任意的Class类型对象     Class<String>这样定义就只能接受String.class
回复 使用道具 举报
?表示Class 对象建模的类的类型为任意类型;class(?)表示对象建模的类型未知。
回复 使用道具 举报
?通配符,表示任意类型,可以引用其他各种参数化的类型,?通配符定义的变量通常用于引用
使用时需注意,它不能调用与参数化有关的方法,只能调用与参数化无关的方法,举例说明:
  1. public void printlCollention(Collection<?> collection){
  2. collection.add(E e);                //错误,add方法与类型参数有关
  3. collection.size();                //正确,size方法与类型参数无关
  4. }
复制代码
回复 使用道具 举报
Class<?>代表类型,中间的"..."表示无限参数,classes表示该无限参数的名字,就是声明它是类   synchronized 是序列化的意思

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

*<?>是泛型,一种特殊数据类型,如 List<String> list,这就声明了一个String的数据集合。作为泛型实参表示classes这些对象可以接受任何类型(类类型)
回复 使用道具 举报
yes,大概明白了。但是还想征求下大伙的意见。  我认为Class<?>是个通配符!就好似sql语句中的模糊查询 select * from teacher where name like '%李%'中的这个百分号(%)把!这里的Class(?)是Class(T)的超类型(类似原始类型 Class和根类型 Object) Class<?>中的问号就代表Object;
回复 使用道具 举报
顶一下 学习
回复 使用道具 举报
Class<?>表示对类类型的一个限制,?表示任意的类。也是类建模的类型的表示,如果不知道类类型的情况下都会使用到Class<?>
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马