2

我不是 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 类中唯一的一个。在这一点上,我不确定问题是什么。

这个特定的类来自一个名为 MIUI 的 ROM 的 Android 框架,我试图从一些反编译的源中复制它。与此同时,我只是简单地删除了'实现可比

提前致谢。

4

2 回答 2

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;
    }
}
于 2012-08-15T01:56:55.100 回答
0

尝试@OverridecompareTo签名中添加一个。

于 2012-08-15T01:47:09.147 回答