Реализуя Comparable, сравните с именем clash: «имеют одинаковое стирание, но ни один не переопределяет другой»

Я хотел бы иметь метод CompareTo, который принимает Real (класс для работы со сколь угодно большими и точными действительными числами [ну, пока этодлина менее 2 ^ 31 в данный момент]) и метод CompareTo, который принимает объект, но Java не 'не позволяй мне и мнеЯ не достаточно опытен, чтобы знать почему.

Я просто попытался изменить класс для реализации Comparable, и я получил эти сообщения об ошибках ниже. Я нене понимаю, что означают сообщения об ошибках, но я знаюэто как-то связано с тем ужасным образом, которым яЯ пытаюсь дать классу некоторую гибкость со всеми различными сигнатурами метода для каждого отдельного метода, который я делаю, и я могу исправить это, удалив метод compareTo (Object other), но в идеале я хотел бы сохранить его. Так что яЯ действительно спрашиваю: есть ли способ заставить эти сообщения об ошибках исчезать, не удаляя метод compareTo (Object other), и что именно означают эти ошибки?

Кроме того, я знаю, что уже есть некоторые встроенные классы Java, такие как BigInteger и тому подобное, для чего яя пытаюсь использовать этот класс для но яЯ делаю это для удовольствия / удовлетворения для использования с 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

Это методы сравнения:

  @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())); }

и конструкторы на тот случай, если они вам понадобятся:

  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()); }

Ответы на вопрос(3)

Ваш ответ на вопрос