Hmm, I guess that's why the equals method doesn't work in this case.
Code:
import java.io.*;
class Number implements Comparable<Number> {
int n;
Number(int n) {
this.n = n;
}
int get() {
return n;
}
public boolean equals(Number number) {
return n == number.get();
}
public int compareTo(Number number) {
Integer i = new Integer(n);
return i.compareTo(number.get());
}
}
class TestContainer<E extends Comparable<E> > {
TestContainer() {
}
boolean isSame(E e1, E e2) {
return e1.equals(e2);
}
int compare(E e1, E e2) {
return e1.compareTo(e2);
}
}
public class Test {
public static void main(String[] arguments) {
Number n1 = new Number(3);
Number n2 = new Number(3);
Number n3 = new Number(4);
TestContainer<Number> testContainer = new TestContainer<Number>();
//Compare two equal elements
System.out.println(testContainer.isSame(n1,n2));
System.out.println(testContainer.compare(n1,n2));
//Compare two different elements
System.out.println(testContainer.compare(n1,n3));
System.out.println(testContainer.compare(n3,n1));
}
}
I still haven't Java generics 100% figured out.