【发布时间】:2013-08-31 23:02:47
【问题描述】:
SO discussion 提出以下成语:
public interface IComparable<T extends IComparable<T>> {
int compare(T t);
}
然后允许:
public class Foo implements IComparable<Foo> {
public int compare(Foo foo) {
return 0;
}
}
但是,这个习语不仅仅允许上面的,因为下面的代码也可以编译:
class A implements IComparable<A> {
public int compare(A a) {return 0;}
}
public class Foo implements IComparable<A> {
public int compare(A a) {
return 0;
}
}
因此(除非我误解了什么)原始成语与远没有那么戏剧性的成语相比并没有真正购买更多东西:
public interface IComparesWith<T> {
int compare(T t);
}
public class A implements IComparesWith<A> {
public int compare(A a) {...}
}
那么,有没有一种方法可以真正声明一个接口,使得任何声明实现它的类都有一个方法来与它自己的类的对象进行比较,而没有任何上述漏洞?
我显然无法将以上内容作为评论发布,因此我创建了一个新帖子。
【问题讨论】:
-
+1:我想知道和我读到你上一个问题一样的事情。