泛型作为方法参数的java实例
我在课堂上使用泛型MyObject必须使用T作为类,例如新的MyObject(Long.class)。在方法equal中,我想确保给该方法的参数是T的一个实例
Object<T>
不是有效的Java源代码,我知道。
我将其添加到代码示例中,以向您展示我的意思,即该值是T的一个实例
但实施平等法的正确方法是什么
public class MyObject<T extends Class> {
public boolean equal(Object<T> value) {
return true;
}
}
# 1 楼答案
假设您不是要覆盖
Object.equals(Object)
:T extends Class
没有什么意义,因为Class
无论如何都是最终的,所以T
对于某些U
来说,唯一可能是Class<U>
,然后你可以让U
作为类型参数。所以你可能想要的是:然后你就可以写,比如,
new MyClass<Long>(Long.class)
但是您确定需要在运行时存储
cl
参数吗?通常你会完全忽略它,所以你只需要写new MyClass<Long>()