我在类里面使用泛型。 MyObject 必须使用 T 作为类,例如新的 MyObject(Long.class)。在 equal 方法中,我想确保提供给该方法的参数是 T 的一个实例。
Object<T>
不是有效的 Java 源代码,我知道。
我将它添加到代码示例中是为了向您展示我的意思,即该值是 T 的一个实例。
但是实现equal方法的正确方法是什么??
public class MyObject<T extends Class> {
public boolean equal(Object<T> value) {
return true;
}
}
最佳答案
如果您要覆盖 equals()
方法,那么您应该检查用于比较相等性的对象的类。
- 签名将表明您可以传递任何
对象
- 可以在不同的对象类型之间定义相等性(不经常发生,但它是有效的)
如果您不覆盖 equals()
,我会将您的方法名称更改为 distinct。否则生活会很困惑。
关于java - Generic 的实例作为方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13084756/