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)