Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 接口方法的非法修饰符_Java_Eclipse_Methods_Interface - Fatal编程技术网

Java 接口方法的非法修饰符

Java 接口方法的非法修饰符,java,eclipse,methods,interface,Java,Eclipse,Methods,Interface,我有以下代码: public interface Type { public static Type match(String string) { try { return TypeBuiltIn.valueOf(string.toUpperCase()); } catch (Exception e) { return null; } } } 我和教程中的某个家伙做了同样的事情,对他

我有以下代码:

public interface Type {
    public static Type match(String string) {
        try {
            return TypeBuiltIn.valueOf(string.toUpperCase());
        } catch (Exception e) {
            return null;
        }
    }
}
我和教程中的某个家伙做了同样的事情,对他来说效果很好,但我在
匹配(字符串)
上遇到了一个错误:

接口方法匹配的非法修改器;只允许公开和摘要


我试图消除静电,但没有任何效果。它说我应该删除方法体,但是我该怎么做呢?

如果您使用的是Java 8下面的Java版本,那么此代码将无法工作,因为
接口
不支持
Java
下面Java 8版本的静态方法。您需要从系统设置更新Java版本,并编辑环境变量
path

如果您不打算更新java版本,那么
接口将不支持任何静态方法。您必须为
实现interfacename
,并在类中的静态方法中具有特定的主体

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

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

    public static Type match(String string) {
        try {
            return TypeBuiltIn.valueOf(string.toUpperCase());
        } 
        catch (Exception e) {
            return null;
        }
    }   
}
您的
应如下所示:

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

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

如果您使用的是Java8以下的Java版本,则此代码将不起作用,因为
接口
不支持
Java
以下Java8版本的静态方法。您需要从系统设置更新Java版本,并编辑环境变量
path

如果您不打算更新java版本,那么
接口将不支持任何静态方法。您必须为
实现interfacename
,并在类中的静态方法中具有特定的主体

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

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

    public static Type match(String string) {
        try {
            return TypeBuiltIn.valueOf(string.toUpperCase());
        } 
        catch (Exception e) {
            return null;
        }
    }   
}
您的
应如下所示:

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

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

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

java version "1.8.xxxx"

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

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

java version "1.8.xxxx"

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

哇。。。你们真了不起!非常感谢你们的帮助,我想我会在大约一周内得到一个答案,但我在几个小时内得到了7个。我使用开普勒,所以它不工作,但后来我安装了Java8支持,它工作了

如果有人有同样的问题,下面是Java 8支持页面:


谢谢大家的帮助。:)

哇。。。你们真了不起!非常感谢你们的帮助,我想我会在大约一周内得到一个答案,但我在几个小时内得到了7个。我使用开普勒,所以它不工作,但后来我安装了Java8支持,它工作了

如果有人有同样的问题,下面是Java 8支持页面:



谢谢大家的帮助。:)

您使用的是什么Java版本?我对Java了解不多,但可能您应该将类型更改为public以外的其他类型,因为您使用的是return?请确保您使用Java 8进行编译。
接口
标记为
静态
的方法并不总是被允许的。使用Java8编译。此外,您不应该只捕获异常,这从来都不是好的做法。我认为您需要捕获EnumConstantNotFound。您使用的是什么Java版本?我对Java不太了解,但可能您应该将类型更改为public以外的其他类型,因为您使用的是return?请确保您是使用Java 8编译的。
接口
标记为
静态
的方法并不总是被允许的。使用Java8编译。此外,您不应该只捕获异常,这从来都不是好的做法。我认为您需要捕获EnumConstantNotFound。我已经安装了java 1.8.0_60,但是当我转到Windows->Prepreferences->java->Compiler时,编译器的符合性级别是从1.3到1.7,我不能选择1.8!:O@2xxx2这不是编辑Java编译器的方式。照我说的做。转到控制面板->系统->高级系统设置->环境变量…->为用户创建新变量
Variable name=“Path”
(不带引号)
Variable value=“安装java jdk 1.8.0_60的bin文件夹的路径”
(同样,不带引号)我知道,它被设置为1.8.0_60的bin文件夹,但不起作用。但现在没事了,我修好了。无论如何,谢谢你PI安装了java 1.8.0_60,但当我进入窗口->预引用->java->编译器时,编译器的符合性级别是1.3到1.7,我不能选择1.8!:O@2xxx2这不是编辑Java编译器的方式。照我说的做。转到控制面板->系统->高级系统设置->环境变量…->为用户创建新变量
Variable name=“Path”
(不带引号)
Variable value=“安装java jdk 1.8.0_60的bin文件夹的路径”
(同样,不带引号)我知道,它被设置为1.8.0_60的bin文件夹,但不起作用。但现在没事了,我修好了。无论如何,谢谢你PI已经有了Java1.8.0_60,所有的系统变量都还可以,但是它仍然不起作用。。。也有同样的错误。我已经有了Java1.8.0_60,所有的系统变量都可以,但它仍然不能工作。。。也有同样的错误。greg-449说只有Luna和Mars支持Java 8,所以我用谷歌搜索了开普勒的修复程序,我就是在那里找到的。。。谢谢你,格雷格!:Pgreg-449说只有月球和火星支持Java8,所以我在谷歌上搜索了开普勒的修复程序,我就是在那里找到的。。。谢谢你,格雷格!:P