有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

泛型作为方法参数的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) 个答案

  1. # 1 楼答案

    假设您不是要覆盖Object.equals(Object)

    T extends Class没有什么意义,因为Class无论如何都是最终的,所以T对于某些U来说,唯一可能是Class<U>,然后你可以让U作为类型参数。所以你可能想要的是:

    public class MyClass<T> {
      private Class<T> cl ;
      public MyClass(Class<T> cl) {
        this.cl = cl ;
        ...
      }
      public boolean equal(T value) {
        return true;
      }
    }
    

    然后你就可以写,比如,new MyClass<Long>(Long.class)

    但是您确定需要在运行时存储cl参数吗?通常你会完全忽略它,所以你只需要写new MyClass<Long>()