kotlin - Java 到 Kotlin 的转换扩展了抽象类
问题描述
我正在根据下面的代码转换一个扩展抽象类的 Java 类
public class BadRequestAlertException extends AbstractThrowableProblem {
private static final long serialVersionUID = 1L;
private final String entityName;
private final String errorKey;
public BadRequestAlertException(String defaultMessage, String entityName, String errorKey) {
this(ErrorConstants.DEFAULT_TYPE, defaultMessage, entityName, errorKey);
}
public BadRequestAlertException(URI type, String defaultMessage, String entityName, String errorKey) {
super(type, defaultMessage, Status.BAD_REQUEST, null, null, null, getAlertParameters(entityName, errorKey));
this.entityName = entityName;
this.errorKey = errorKey;
}
public String getEntityName() {
return entityName;
}
public String getErrorKey() {
return errorKey;
}
private static Map<String, Object> getAlertParameters(String entityName, String errorKey) {
Map<String, Object> parameters = new HashMap<>();
parameters.put("message", "error." + errorKey);
parameters.put("params", entityName);
return parameters;
}
}
按照下面的实现进入 Kotlin
class BadRequestAlertException(type: URI = ErrorConstants.DEFAULT_TYPE, defaultMessage: String, val entityName: String, val errorKey: String) : AbstractThrowableProblem(type, defaultMessage, Status.BAD_REQUEST, null, null, null, getAlertParameters(entityName, errorKey)) {
companion object {
private const val serialVersionUID = 1L
private fun getAlertParameters(entityName: String, errorKey: String): Map<String, Any> {
val parameters = HashMap<String, Any>()
parameters["message"] = "error.$errorKey"
parameters["params"] = entityName
return parameters
}
}
}
Kotlin 实现引发以下错误Class 'BadRequestAlertException' is not abstract and does not implement abstract base class member public abstract fun getCause(): Exceptional! defined in org.zalando.problem.AbstractThrowableProblem
。
为什么Java版没有实现getClause()
方法,而Kotlin却要求方法被覆盖?转换有问题,还是 Kotlin 扩展抽象类的方式有问题?
解决方案
推荐阅读
- ios - UIImage 未添加到 UICollectionView 中的所有单元格
- python - Mac OS Django-admin startproject mysite 收到语法错误
- python - 使用 Pandas 或命令行上传到 BigQuery 时出现奇怪的重复字段错误。所有字段唯一
- excel - 循环和偏移以确定单元格值
- java - 如何通过 zalando 日志中的 URL 过滤响应正文
- python - 在这种情况下,最佳代码实践是什么?
- node.js - 无法使用 Nodejs 从 s3 流式传输大量文件
- ios - 如何使用swift更新firebase firestore中的文档?
- java - HSLQDB + JPA2(使用 Hibernate)- 尝试 TRUNCATE SCHEMA 时应用程序卡住
- npm - Github 操作:未找到 NPM 发布 404