java - Kotlin 的 JvmDefault - 还需要声明方法吗?
问题描述
我正在将我的 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(){
}
}
我错过了什么吗?
谢谢
文森特
解决方案
您的方法名称与java.lang.Object.finalize()
. 如果您选择不同的方法名称,则应修复该错误。
推荐阅读
- azure - 如何使用 Python Azure Functions QueueTrigger 手动将消息出列?
- javascript - 为什么有条件时html标签不呈现?
- angular - 如何通过该服务的测试套件将不同的依赖模拟注入到服务中?
- python - 输入 n 个不同的正数。计算其中所有素数的平均值。[Python]
- azure-webjobs - .Net 4.7 - Azure WebJob 项目 - NuGet 更新后缺少 JobHostConfiguration/RunAndBlock
- c# - 使用 CrystalDecisions.CrystalReports.Engine 创建新的 ReportDocument 时出现 FileNotFoundException
- reactjs - 如何使用 Material-UI ⚛️ React Web 更改标签的样式(颜色;图标;指示器;大小等)?
- python - 如何用熊猫四舍五入计算
- android - Gradle 生成 APK -- 条目名称 'META-INF/androidx.hilt_hilt-common.version' 冲突
- node.js - TypeScript:捕获在高阶函数中作为参数传递的函数的变量签名