Java 编写容器通用比较器的更好方法

Java 编写容器通用比较器的更好方法,java,generics,Java,Generics,我有一个容器对象,如下所示: class Container<V> { V value; } class ContainerComparator<V extends Comparable<V>> implements Comparator<Container<V>> { @Override public int compare(Container<V> o1, Container<V>

我有一个容器对象,如下所示:

class Container<V> {
    V value;
}
class ContainerComparator<V extends Comparable<V>> implements Comparator<Container<V>> {
    @Override
    public int compare(Container<V> o1, Container<V> o2 ) {
        return ...;
    }
}
可通过以下方式使用:

    Container<String> x1, x2;

    new ValueComparator<String,Container<String>>().compare( x1, x2 );
                        ^^^^^^ ?
容器x1、x2;
新的ValueComparator()。比较(x1,x2);
^^^^^^ ?
问题是:有没有更好的方法来实现这一点,以便消除冗余类型信息,以便我可以编写:

    new ValueComparator<Container<String>>().compare( x1, x2 );
newvaluecomparator().compare(x1,x2);

您可以像这样更改
ValueComparator
声明:

class Container<V> {
    V value;
}
class ContainerComparator<V extends Comparable<V>> implements Comparator<Container<V>> {
    @Override
    public int compare(Container<V> o1, Container<V> o2 ) {
        return ...;
    }
}
class ContainerComparator实现Comparator{
@凌驾
公共整数比较(容器o1、容器o2){
返回。。。;
}
}
现在,您可以使用单个类型参数声明它:

new ContainerComparator<String>().compare(x1, x2);
newcontainercomparator()。比较(x1,x2);

您可以像这样更改
ValueComparator
声明:

class Container<V> {
    V value;
}
class ContainerComparator<V extends Comparable<V>> implements Comparator<Container<V>> {
    @Override
    public int compare(Container<V> o1, Container<V> o2 ) {
        return ...;
    }
}
class ContainerComparator实现Comparator{
@凌驾
公共整数比较(容器o1、容器o2){
返回。。。;
}
}
现在,您可以使用单个类型参数声明它:

new ContainerComparator<String>().compare(x1, x2);
newcontainercomparator()。比较(x1,x2);

您可以像这样更改
ValueComparator
声明:

class Container<V> {
    V value;
}
class ContainerComparator<V extends Comparable<V>> implements Comparator<Container<V>> {
    @Override
    public int compare(Container<V> o1, Container<V> o2 ) {
        return ...;
    }
}
class ContainerComparator实现Comparator{
@凌驾
公共整数比较(容器o1、容器o2){
返回。。。;
}
}
现在,您可以使用单个类型参数声明它:

new ContainerComparator<String>().compare(x1, x2);
newcontainercomparator()。比较(x1,x2);

您可以像这样更改
ValueComparator
声明:

class Container<V> {
    V value;
}
class ContainerComparator<V extends Comparable<V>> implements Comparator<Container<V>> {
    @Override
    public int compare(Container<V> o1, Container<V> o2 ) {
        return ...;
    }
}
class ContainerComparator实现Comparator{
@凌驾
公共整数比较(容器o1、容器o2){
返回。。。;
}
}
现在,您可以使用单个类型参数声明它:

new ContainerComparator<String>().compare(x1, x2);
newcontainercomparator()。比较(x1,x2);

如果V不可比,您希望行为是什么?如果V不可比,您希望行为是什么?如果V不可比,您希望行为是什么?如果V不可比,您希望行为是什么?谢谢您的回答。但这是错误的方向。(基本上,Container是其他类的基类,在实际代码中,我想使用一些可读的东西,比如ContainerComparator,而不是ContainerComparator)感谢您的回答。但这是错误的方向。(基本上,Container是其他类的基类,在实际代码中,我想使用一些可读的东西,比如ContainerComparator,而不是ContainerComparator)感谢您的回答。但这是错误的方向。(基本上,Container是其他类的基类,在实际代码中,我想使用一些可读的东西,比如ContainerComparator,而不是ContainerComparator)感谢您的回答。但这是错误的方向。(基本上,Container是其他类的基类,在实际代码中,我想使用一些可读的东西,比如ContainerComparator,而不是ContainerComparator)