Java 科特林';s JvmDefault-仍然需要声明该方法吗?
我正在将我的Spring Boot 1.5+Kotlin 1.2.41项目构建到一个jar中。jar中的一个接口具有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
@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()
冲突。请尝试选择其他方法名称。非常感谢,就这样。你不想发布一个答案而不是评论,这样我就可以接受了吗?