我有这段代码:
public interface Type {
public static Type match(String string) {
try {
return TypeBuiltIn.valueOf(string.toUpperCase());
} catch (Exception e) {
return null;
}
}
}
我和教程中的某个人做的一样,对他来说效果很好,但我在match(String string)
上收到错误:
接口方法匹配的非法修饰符;只有公共和允许摘要
我试图删除静态,但没有任何作用。它说我应该删除方法体,但是我该怎么做呢?
答案 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)
如果有人遇到同样的问题,请访问以下Java 8支持页面: https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler
感谢大家的帮助。 :)