Конфликт имен при реализации Comparable

Я не эксперт по Java, но обычно я могу определить ошибки, с которыми я сталкиваюсь при работе с ним. Этот конкретный, однако, заставляет меня чесать голову.

У меня есть следующий класс (с ненужным пухом, удаленным для простоты чтения этого поста)

package miui.content.res;

import android.app.ActivityManagerNative;
import android.app.IActivityManager;
import android.content.res.Configuration;
import android.os.Parcel;
import android.os.RemoteException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

public class ExtraConfiguration
    implements Comparable<ExtraConfiguration>
{
    public int themeChanged;

    public int compareTo(ExtraConfiguration that)
    {
        return this.themeChanged - that.themeChanged;
    }
}

Мне это кажется довольно простым, но при компиляции я получаю следующую ошибку:

out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/src/miui/content/res/ExtraConfiguration.java:2: 
name clash: 
    compareTo(java.lang.Object) in miui.content.res.ExtraConfiguration and 
    compareTo(T) in java.lang.Comparable<miui.content.res.ExtraConfiguration> 
    have the same erasure, yet neither overrides the other

Я немного освежил концепцию стирания, и метод CompareTo(), который я показываю в фрагменте кода, является единственным в классе ExtraConfiguration. На данный момент я не уверен, в чем проблема.

Этот конкретный класс взят из фреймворка Android для ПЗУ, известного как MIUI, который я пытаюсь скопировать из некоторого декомпилированного источника. В то же время я просто удалил 'Comparable'

Заранее спасибо.

2 ответа

Решение

Вы должны быть в состоянии сделать это, чтобы обойти это, но я не могу объяснить, почему вы получаете ошибку:

public class ExtraConfiguration
    implements Comparable<Object>
{
    public int themeChanged;

    public int compareTo(Object that)
    {
        if (!(that instanceof ExtraConfiguration)) {
            throw new ClassCastException();
        } else {
            return compareTo((ExtraConfiguration) that);
        }
    }

    public int compareTo(ExtraConfiguration that)
    {
        return this.themeChanged - that.themeChanged;
    }
}

Попробуйте добавить @Override к compareTo подпись.

Другие вопросы по тегам