eclipse 接口方法的修饰符非法

92dk7w1h  于 2022-11-04  发布在  Eclipse
关注(0)|答案(3)|浏览(171)

我有这样的代码:

public interface Type {
    public static Type match(String string) {
        try {
            return TypeBuiltIn.valueOf(string.toUpperCase());
        } catch (Exception e) {
            return null;
        }
    }
}

我做的事情和教程中的某个家伙一样,对他来说它工作得很好,但是我在match(String string)上得到了一个错误:
接口方法匹配的修饰符非法;只允许公开和抽象
我试着移除静态的,但是没有任何效果。它说我应该移除方法体,但是我该怎么做呢?

oyxsuwqo

oyxsuwqo1#

如果您使用的是Java 8以下的Java版本,则此代码将不起作用,因为interface不支持Java 8以下的java版本的静态方法。您需要从this link更新Java版本,并从系统设置中编辑环境变量path
如果你不打算更新你的 *java版本 *,那么你的Interface将不支持任何静态方法。你必须为class使用implement interfacename,并在类的静态方法中使用特定的主体。
为此,您的界面应如下所示:

public interface Type {
    public abstract Type match(String string);
}

而你的class应该如下:

public class YourDesiredClassname implements Type {

    public static Type match(String string) {
        try {
            return TypeBuiltIn.valueOf(string.toUpperCase());
        } 
        catch (Exception e) {
            return null;
        }
    }   
}
iibxawm4

iibxawm42#

请查看命令java -version的输出。它打印的第一行应该类似于

java version "1.8.xxxx"

在java 8之前不允许静态方法默认实现。

9vw9lbht

9vw9lbht3#

哇...你们太棒了!非常感谢你们的帮助,我以为我会在一周内得到一个答案,但我在几个小时内得到了7个。我用的是Kepler,所以它不工作,但后来我安装了Java 8支持,它工作了。
如果有人遇到同样的问题,请访问Java 8支持页面:https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler
谢谢大家的帮助。:)

相关问题