我是Java的新手.这可能是一个愚蠢的问题 - 但我无法在任何地方找到答案.如果你想声明一个接收未知对象并对其做某事的方法(例如复制它),那么之间的区别是:
<T> T func(Class<T> cls){
//do something
}
Object func(Object o){
//do something
}
Run Code Online (Sandbox Code Playgroud)
他们可比吗?你有什么能用上述方法而不是其他方法吗?哪里Class<?>适合?
您代码中的区别在于,前者func接收到一个Class<T>(可以是Class<?>),这意味着该方法仅接收一个Class类型。后者接收任何对象,无论它是类还是其他类型的对象。
从Classjavadoc:
类Class的实例表示正在运行的Java应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组还属于一个反映为Class对象的类,该类对象由元素类型和维数相同的所有数组共享。
请注意,这Class是您的课程的元数据。
如果您的代码是这样的:
<T> T func(T o){
//do something
}
Object func(Object o){
//do something
}
Run Code Online (Sandbox Code Playgroud)
主要区别在于返回类型:前一个返回类型应与参数的类型相同,而后者是泛型的Object。例如:
Object func(Object o){
//do something
return o.toString(); //compiles and works
}
<T> T func(T o){
//do something
return o.toString(); //does not compile
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7676 次 |
| 最近记录: |