接口方法的非法修饰符

时间:2015-08-30 11:14:09

标签: java eclipse methods interface

我有这段代码:

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

我和教程中的某个人做的一样,对他来说效果很好,但我在match(String string)上收到错误:

  

接口方法匹配的非法修饰符;只有公共和允许摘要

我试图删除静态,但没有任何作用。它说我应该删除方法体,但是我该怎么做呢?

3 个答案:

答案 0 :(得分:2)

如果您使用的是 Java 8 下的Java版本,则此代码无效,因为interface不支持 Java 8下java版本的静态方法即可。您需要从this link更新Java版本,并从系统设置中编辑环境变量path

如果您不打算更新 java版本,那么您的Interface将不支持任何静态方法。对于implement interfacename,您必须class并且在类中的静态方法中具有特定的主体。

为此,您的界面应如下所示:

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

答案 1 :(得分:1)

请参阅命令 java -version 的输出。它打印的第一行应该是

java version "1.8.xxxx"

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

答案 2 :(得分:1)

哇...你们真棒!非常感谢大家的帮助,我认为我会在一周左右得到一个答案,但我在几个小时内得到了7分。我使用Kepler所以它没有用,但后来我安装了Java 8支持,它可以工作。

如果有人遇到同样的问题,请访问以下Java 8支持页面: https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler

感谢大家的帮助。 :)