代码之家  ›  专栏  ›  技术社区  ›  xcesco

编译测试库不编译接口的静态方法(Java8)

  •  1
  • xcesco  · 技术社区  · 6 年前

    Kripton Persistence Library .

    compile testing library . 当我尝试测试以下接口的编译时:

    public interface AppDataSource {
    
        static void execute(DaoPerson daoPerson) {
            daoPerson.insert(new Person());
        }
    }
    

    代码如下:

    ImmutableList<JavaFileObject> generated = com.google.testing.compile.Compiler.javac()
                        .compile(sourcesPhase1).generatedSourceFiles();
    

    我得到以下错误:

    sqlite/feature/transition/AppDataSource.java:29: error: modifier static not allowed here
        static void execute(DaoPerson daoPerson) {
    

    完整代码位于:

    https://github.com/xcesco/kripton/tree/v5.x/kripton-processor/src/test/java/sqlite/feature/transition

    我怎么了?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Manjunath H M    6 年前

    请检查您的编译器,它可能使用的版本低于java8。

    静态方法是在java8中引入的,如果您的编译器使用java8,那么您在编译时不会出错。

    如果您安装了java8版本,并且您的编译器使用以下版本而不是java8,那么您将得到如下编译错误。

    -source 1.7中不支持静态接口方法 静态void execute(){ (使用-source 8或更高版本来启用静态接口方法)


    只有在源代码级别1.8或更高的接口中才允许使用静态方法

    推荐文章