我希望创建一个Kotlin包装器围绕一些糟糕的设计决策的Java库。我面临的一个问题是,库中的POJO没有一个遵循getter和setter的正常Java Bean约定。
Kotlin可以推断遵循普通getter/setter约定的Java对象的属性:
有哪些可供选择的方案?
您可以创建扩展属性,就像扩展方法一样。
val Foo.bar: Bar
get() = someOtherWayOfGettingBar()
有两种类型的对象属性。 第一种是 数据属性。我们已经知道如何使用它们了。到目前为止,我们使用过的所有属性都是数据属性。 第二种类型的属性是新东西。它是 访问器属性(accessor properties)。它们本质上是用于获取和设置值的函数,但从外部代码来看就像常规属性。 Getter 和 setter 访问器属性由 “getter” 和 “setter” 方法表示。在对象字面量中,它们用 get
如何在Kotlin中创建一个具有私有getter(或只是没有)但具有公共setter的属性? 不能使用错误: 在我的例子中,原因是Java Interop:我希望我的Java代码能够调用,但不能调用。
问题内容: 如果我有以下私人成员: 我应该如何命名我的吸气剂/设置剂: 要么 编辑:或 ? 问题答案: 正确答案是 如果希望根据 8.8 节 : 将JavaBeans API规范 的推断名称大写 (例如,通过JSP中的$ {object.xIndex}访问它们),将它们用作属性。
问题内容: 我的教授真正强调要通过始终使用访问器和更改器来访问私有实例变量来防止隐私泄漏。但是,我必须在班级中使用班级的getter / setter方法吗? 因此,例如,如果我有以下课程: 我想为此编写一个toString()方法。我可以写: 还是我需要做这样的事情: 问题答案: 您可以任一个。但是,您的教授可能会喜欢使用方法而不是直接访问。这就是为什么。 假设您有一个这样的课程: 很简单,对吧
有什么方法可以在Kotlin数据类中创建一个私有setter和一个公共getter吗?
问题内容: 案例A 不遵循Getter&Setter约定 human / human.go main / main.go 案例B 遵循getter和setter约定 main / main.go 以下约定的问题是,在提供其字段名称时无法实例化该结构。我想使用约定,但是我只能使用私有访问。 问题答案: 实例化结构(或对象,采用面向对象的语言)时,无论如何都不应指定私有字段的值。但是,提供可能以私有字