如何比较Java中类的两个不同泛型实例化?

问题描述 投票:0回答:1

MRE 因为好吧,作业...叹息

这是我遇到的问题:
考虑以下课程:

class MyClass<T extends Comparable<T>> implements Comparable<MyClass<T>> {

... override the compareTo
}

这使我可以将

MyClass<Integer>
与另一个
MyClass<Integer>
进行比较,甚至将
MyClass<MyClass<Integer>>
与另一个
MyClass<MyClass<Integer>>
进行比较。 但是,作业要求我能够将
MyClass<MyClass<Integer>>
MyClass<MyClass<String>>
进行比较,因为比较仅使用计数器并返回具有较大计数器的类(作为两者中较大的一个)。
我将如何实现这一目标?我的猜测是,比较器开始发挥作用,正如此处所示。然而,我无法完全确定它。是否像使用比较器中的比较(对象,对象)一样简单,还是其他东西

java comparator comparable
1个回答
1
投票

您可以使用

?
而不是显式指定类型:

class MyClass<T extends Comparable<T>> implements Comparable<MyClass<?>> {
    private int counter; // or any other variable
    
    @Override
    public int compareTo(MyClass<?> o) {
        return counter - o.counter;
    }
}

然后像这样使用它:

MyClass<String> string = new MyClass<>();
MyClass<Integer> integer = new MyClass<>();

int result = string.compareTo(integer);
© www.soinside.com 2019 - 2024. All rights reserved.