我有这样的代码:
public interface Type {
public static Type match(String string) {
try {
return TypeBuiltIn.valueOf(string.toUpperCase());
} catch (Exception e) {
return null;
}
}
}
我做的事情和教程中的某个家伙一样,对他来说它工作得很好,但是我在match(String string)
上得到了一个错误:
接口方法匹配的修饰符非法;只允许公开和抽象
我试着移除静态的,但是没有任何效果。它说我应该移除方法体,但是我该怎么做呢?
3条答案
按热度按时间oyxsuwqo1#
如果您使用的是Java 8以下的Java版本,则此代码将不起作用,因为
interface
不支持Java 8以下的java
版本的静态方法。您需要从this link更新Java版本,并从系统设置中编辑环境变量path
。如果你不打算更新你的 *java版本 *,那么你的
Interface
将不支持任何静态方法。你必须为class
使用implement interfacename
,并在类的静态方法中使用特定的主体。为此,您的界面应如下所示:
而你的
class
应该如下:iibxawm42#
请查看命令java -version的输出。它打印的第一行应该类似于
在java 8之前不允许静态方法默认实现。
9vw9lbht3#
哇...你们太棒了!非常感谢你们的帮助,我以为我会在一周内得到一个答案,但我在几个小时内得到了7个。我用的是Kepler,所以它不工作,但后来我安装了Java 8支持,它工作了。
如果有人遇到同样的问题,请访问Java 8支持页面:https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler
谢谢大家的帮助。:)