Implementieren von Comparable, compareTo-Namenskonflikt: "Gleiche Löschung, aber keine überschreibt die andere"

Ich hätte gerne eine compareTo-Methode, die eine Real-Methode (eine Klasse zum Arbeiten mit willkürlich großen und präzisen reellen Zahlen [na ja, solange sie im Moment kürzer als 2 ^ 31 ist]) und eine compareTo-Methode, die eine Real-Methode benötigt ein Objekt, aber Java lässt mich nicht und ich bin nicht erfahren genug, um zu wissen warum.

Ich habe gerade versucht, die Klasse zu ändern, um Comparable zu implementieren. Die folgenden Fehlermeldungen werden angezeigt. Ich verstehe nicht wirklich, was die Fehlermeldungen bedeuten, aber ich weiß, dass es etwas mit der schrecklichen Art zu tun hat, wie ich versuche, der Klasse mit all den verschiedenen Methodensignaturen für jede einzelne von mir erstellte Methode eine gewisse Flexibilität zu geben, und ich kann das Problem beheben es durch Entfernen der compareTo (Object other) -Methode, aber ich möchte es idealerweise behalten. Was ich also wirklich frage, ist: Gibt es eine Möglichkeit, diese Fehlermeldungen verschwinden zu lassen, ohne die compareTo (Object other) -Methode zu entfernen, und was genau bedeuten diese Fehler?

Ich weiß auch, dass es bereits einige integrierte Java-Klassen wie BigInteger und dergleichen gibt, für die ich diese Klasse verwenden möchte, aber ich mache es aus Spaß / Zufriedenheit für die Verwendung mit Project Euler (https://projecteuler.net/).

Jake@Jake-PC /cygdrive/c/Users/Jake/Documents/Java/Mathematics
$ javac Real.java
Real.java:377: error: name clash: compareTo(Real) in Real overrides a method whose erasure is the same as another method, yet neither overrides the other
  public int compareTo(Real other)
             ^
  first method:  compareTo(Object) in Real
  second method: compareTo(T) in Comparable
  where T is a type-variable:
    T extends Object declared in interface Comparable
Real.java:440: error: name clash: compareTo(Object) in Real and compareTo(T) in Comparable have the same erasure, yet neither overrides the other
  public int compareTo(Object other)
             ^
  where T is a type-variable:
    T extends Object declared in interface Comparable
2 errors

Dies sind die compareTo-Methoden:

  @Override
  public int compareTo(Real other)
  {
    // Logic.
  }
  public int compareTo(char givenValue) 
  { return compareTo(new Real(givenValue)); }
  public int compareTo(char[] givenValue) 
  { return compareTo(new Real(givenValue)); }
  public int compareTo(char[] givenValue, int offset, int count) 
  { return compareTo(new Real(givenValue, offset, count)); }
  public int compareTo(double givenValue) 
  { return compareTo(new Real(givenValue)); }
  public int compareTo(float givenValue) 
  { return compareTo(new Real(givenValue)); }
  public int compareTo(int givenValue) 
  { return compareTo(new Real(givenValue)); }
  public int compareTo(long givenValue) 
  { return compareTo(new Real(givenValue)); }
  public int compareTo(Object other) 
  { return compareTo(new Real(other.toString())); }

und die Konstruktoren für den Fall, dass Sie sie brauchen:

  public Real(String givenValue)
  {
    // Logic.
  }
  public Real(char givenValue) 
  { this(String.valueOf(givenValue)); }
  public Real(char[] givenValue) 
  { this(String.valueOf(givenValue)); }
  public Real(char[] givenValue, int offset, int count) 
  { this(String.valueOf(givenValue, offset, count)); }
  public Real(double givenValue) 
  { this(String.valueOf(givenValue)); }
  public Real(float givenValue) 
  { this(String.valueOf(givenValue)); }
  public Real(int givenValue) 
  { this(String.valueOf(givenValue)); }
  public Real(long givenValue) 
  { this(String.valueOf(givenValue)); }
  public Real(Object other) 
  { this(other.toString()); }

Antworten auf die Frage(3)

Ihre Antwort auf die Frage