Browse Source

Fix AnyObjectId's generic type declaration of Comparable

If you look at any implementation of Comparable in the JDK, you'll see
that the type parameter for Comparable is supposed to be the type of
the implementing class:

http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html

The current type signature of Comparable<Object> is pretty awful, at the
very least because you can not, in fact, successfully compare
AnyObjectId with any random subclass of Object. It also causes problems
with type-inference and the scala.math.Ordering trait in Scala.

In order to compile, this change *does* require removing the
AnyObjectId.ompareTo(Object) method - which actually only ever cast
to AnyObjectId in any case. Nothing in the JGit test suite requires this
method, but it might constitute a breaking API change, so it would be
best if it can be added in time for JGit 3.0.

Change-Id: I3b549a5519ccd6785f98e444da76d2363bcbe41a
tags/v3.0.0.201305281830-rc2
Roberto Tyley 11 years ago
parent
commit
e7fc19fc0c
1 changed files with 1 additions and 5 deletions
  1. 1
    5
      org.eclipse.jgit/src/org/eclipse/jgit/lib/AnyObjectId.java

+ 1
- 5
org.eclipse.jgit/src/org/eclipse/jgit/lib/AnyObjectId.java View File

@@ -57,7 +57,7 @@ import org.eclipse.jgit.util.NB;
* with this instance can alter at any time, if this instance is modified to
* represent a different object name.
*/
public abstract class AnyObjectId implements Comparable<Object> {
public abstract class AnyObjectId implements Comparable<AnyObjectId> {

/**
* Compare to object identifier byte sequences for equality.
@@ -184,10 +184,6 @@ public abstract class AnyObjectId implements Comparable<Object> {
return NB.compareUInt32(w5, other.w5);
}

public final int compareTo(final Object other) {
return compareTo(((AnyObjectId) other));
}

/**
* Compare this ObjectId to a network-byte-order ObjectId.
*

Loading…
Cancel
Save