我不是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框架,我试图从一些反编译源中复制它。与此同时,我只是删除了'Comparable'工具
提前致谢。
答案 0 :(得分: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;
}
}
答案 1 :(得分:0)
尝试在@Override
签名中添加compareTo
。