各位前辈,问一个问题,有关Class<......>

江湖啊江湖 2013-01-18 03:07:39
一、在定义一个方法的时候
1---
public void demo1(Class<String> param){}
这样定义代表了什么,与demo1(String param)有什么区别呢?
2---
public void demo2(Class<?> param){}
这样定义,又与demo2(Class<String> param)有什么区别呢?
3---
public void demo3(Class<? entends String> param){}
这样定义,又与demo2(Class<?> param)的区别是什么呢?
4---
public Class<String> demo4(String param){}
这样定义,返回值应该是 "xxxxxx" 还是"xxxx".getClass()为什么呢?
5---
public Class<?> demo5(String param){}
这样定义,返回值应该是什么呢?
6---
public Class<? extends Object> demo6(String param){}
这样定义,返回值应该是什么呢?

感谢各位帮忙看一下,。
...全文
240 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
brightyq 2013-01-18
  • 打赏
  • 举报
回复
其实楼主不明白Class<>这个东东。 Class应该明白吧?类对象。 那么Class<String> param ,就是param只能接收String或它的子类的类对象,又因为String是被定义为final的,所以param只能接收String.class 了。它和Class<? entends String> 等价。 Class<?> param 是可以接收任务类型的,它和Class<? extends Object>等价
古怪今人 2013-01-18
  • 打赏
  • 举报
回复
楼上正解啊,非常不错
linao 2013-01-18
  • 打赏
  • 举报
回复
1.前者参数是Class对象,后者是String对象。 2.前者泛型为?,参数可以为任意类的Class对象。后者泛型为String,参数只能是String类及其子类的Class对象。 3.前者泛型为? extends String,参数可以为任意继承String的类或者String的Class的对象。后者泛型为?,参数可以为任意类的Class对象。 4."xxxx".getClass(),返回的是Class对象,不是String类本身。 5.任意类的Class对象。 6.任意继承Object类的类的Class对象。 分清类和Class对象的关系,Class类也是一个类,Class类的实例表示正在运行的Java应用程序中的类和接口。Class没有公共构造方法。Class对象是在加载类时由Java虚拟机以及通过调用类加载器中的defineClass 方法自动构造的。以上摘自JDK API 1.6.0。 可以说,每个JVM加载的类都有一个Class实例对象。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧