我有一个开放的静态编程语言类,其属性为value: String
。
open class PropHolder {
open val value: String = ""
}
有一个带有函数String getValue()
的Java接口。
public interface Property {
public String getValue();
}
我有一个子类继承自open Kotlin类并实现Java接口。
class Child : PropHolder(), Property {
override fun getValue() = value
}
遇到平台声明冲突:
我尝试过:
class Child : PropHolder(), Property {
override val value: String = ""
@JvmName("getHeldValue") get() = field
override fun getValue() = value
}
以及:
class Child : PropHolder(), Property {
@JvmName("getPropValue")
override fun getValue() = value
}
但是,因为这些是继承的方法,所以我实际上不能覆盖其中任何一个的JvmName。
有什么办法可以让这一切顺利吗?
看起来我可能遇到了这个尚未解决的问题:https://youtrack.jetbrains.com/issue/KT-6653
目前的共识是,可能很快就会有一份书面报告来探讨潜在的选择,但目前还没有好的解决方案。
以下声明在科特林是合法的。 作为字节码,我们得到: 也可以从Kotlin调用这两个方法。 当我试图从Java调用它们中的任何一个时,问题就出现了: 模棱两可的调用。两种方法都匹配… 如何避免这样的问题?如何处理这些方法?若第三方kt库也有同样的问题怎么办? 上面的例子是一个合成的例子。
如何使用自定义setter声明属性,但在Kotlin中没有getter?例如,在安科,他们这样做: 但在我看来,这有点骇人。这样做对吗?如果是,那么当一个项目没有Anko依赖关系时,情况会怎样呢? 附言:让我说清楚——我想没有吸气剂,而不是私人吸气剂
如何避免对类的可选属性使用 我应该创建一个局部变量吗?我认为使用不是一个好的做法
问题内容: 我知道这个问题已经被问过几次了,但是他们都没有真正的解决方法。对于我的具体情况,也许有一个。 我正在构建一个映射器类,该映射器类使用magic方法来延迟加载其他对象。看起来像这样: 在我的代码中,我这样做: 到目前为止,该方法有效。该对象没有名为“ role”的属性,因此它使用magic 方法创建该对象,并从“ role”对象返回其属性。 但是当我尝试修改’rolename’时: 然后
问题内容: 我希望对我在Spring中涉及到属性文件的问题有所帮助。所以我的设置是这样的: opto-mapping.properties –该文件位于我的src文件夹中,其中包含针对我的优化资源的翻译,如下所示: 每次运行“优化”构建时,都会更新此属性文件。然后我用 将属性文件导入所需的jsp中。然后通过使用以下内容引用内容: 除了属性文件需要重新启动tomcat重启外,所有这些工作都很漂亮。我
但是对于Java项目,和都会出现上面的文档,因为在getter中有setter JavaDoc,在setter中有getter JavaDoc。 尝试用Kotlin将两个访问器的文档分开,方法如下: 对于Kotlin和Java代码,IDE中都没有显示JavaDoc。 会很感激任何想法。