根据我的阅读/理解: -
每次JVM创建对象时,它还会创建一个描述对象类型的java.lang.Class
对象。同一个类的所有实例共享相同的Class
对象。
Class<SomeClass>
是一种表示此对象的方法,该对象的类型为Class
,并且是在创建类型SomeClass
类的任何对象时创建的(根据上面的定义),并且与SomeClass
类相关联。
但是当我在StackOverflow线程下面阅读时,关于Class<?>
: -
What does Class<?> mean in Java?
在第一个答案中说,通过编写Class<?>
,我们宣布一个Class
对象可以是任何类型。我很困惑,不管Class
是什么,这个对象都不是?
类型,因为它是类Class
的对象?
我不明白'通用'是什么。如果您必须在答案中使用该术语,我真的很感激您是否可以同时解释这一点。感谢。
答案 0 :(得分:0)
在第一个答案中说,通过编写
Class<?>
,我们可以声明一个Class
对象,它可以是任何类型。我很困惑,不管是什么,这个对象都不属于Class
类型?是,因为它是类Class
的对象?
没有。使用Class<?>
时,强制使用可参数化的类。例如,您可以使用List<>
,因为List
可参数化:例如List<String>
。您无法使用Dog
。
我不明白&#39; generic&#39;是。如果您必须在答案中使用该术语,我真的很感激您是否可以同时解释这一点
简而言之,泛型使类型(类和接口)在定义类,接口和方法时成为参数。与方法声明中使用的更熟悉的形式参数非常相似,类型参数提供了一种使用不同输入重用相同代码的方法。不同之处在于形式参数的输入是值,而类型参数的输入是类型。
了解它们的最简单方法可能是查看List
类。当你使用:
List<String> list = new ArrayList<>();
您正在指定与List
关联的类型。然后可以在您的函数或实现中使用此类型:
想象一下ArrayList
类中的这个函数:
public T get(int index) {
return this.get(index);
}
此函数将返回String
个对象,因为我将其声明为List<String>
!因此,我不必操纵对象列表,然后自己投射。我在列表的声明中定义了列表的内容。