Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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 科特林';s JvmDefault-仍然需要声明该方法吗?_Java_Kotlin - Fatal编程技术网

Java 科特林';s JvmDefault-仍然需要声明该方法吗?

Java 科特林';s JvmDefault-仍然需要声明该方法吗?,java,kotlin,Java,Kotlin,我正在将我的Spring Boot 1.5+Kotlin 1.2.41项目构建到一个jar中。jar中的一个接口具有@JvmDefault,它可以使用该标志进行良好编译(如果删除该标志,则会失败) 现在,我尝试在另一个java项目中使用这个接口,在这个项目中,我将Kotlin项目定义为一个依赖项 在一个实现类中,我不重写默认方法。Intellij似乎对此没有意见,因为它没有抱怨。但是,当我使用Maven编译时,我得到: [ERROR] attempting to assign weaker ac

我正在将我的Spring Boot 1.5+Kotlin 1.2.41项目构建到一个jar中。jar中的一个接口具有
@JvmDefault
,它可以使用该标志进行良好编译(如果删除该标志,则会失败)

现在,我尝试在另一个java项目中使用这个接口,在这个项目中,我将Kotlin项目定义为一个依赖项

在一个实现类中,我不重写默认方法。Intellij似乎对此没有意见,因为它没有抱怨。但是,当我使用Maven编译时,我得到:

[ERROR] attempting to assign weaker access privileges; was public
如果我实现该方法(使用一些虚拟实现),那么它将编译。。。但它违背了默认接口的目的

你知道会出什么问题吗

从java项目中打开Kotlin接口代码时,我看到的反编译代码如下:

public interface CrawlerOutput {
    @kotlin.jvm.JvmDefault public open fun finalize(): kotlin.Unit { /* compiled code */ }

    public abstract fun output(analyzedRepository: com.myCompany.Repository): kotlin.Unit
}
实现接口的java代码:

public class CsvOutput implements CrawlerOutput {

    @Override
    public void output(Repository repository) throws IOException {
        log.info("own output is receiving some data !");
    }

    /**
    * IF I REMOVE BELOW METHOD, MAVEN CAN'T COMPILE IT ANYMORE, 
    * COMPLAINING OF WEAKER ACCESS PRIVILEGE
    */      
    @Override
    public void finalize(){

    }

}
我错过什么了吗

谢谢


Vincent

您的方法名称与
java.lang.Object.finalize()冲突。如果选择其他方法名称,则应修复此错误。

方法名称与
java.lang.Object.finalize()
冲突。请尝试选择其他方法名称。非常感谢,就这样。你不想发布一个答案而不是评论,这样我就可以接受了吗?