在Android Studio中,当我按 Alt + Enter 并将方法参数分配给类成员字段时,我正在处理Java类。
但是当我使用Kotlin时,没有对此功能的建议。
我可以为此创建新建议,还是有办法为字段分配参数?
Java类建议:
Kotlin班级建议:
答案 0 :(得分:5)
在kotlin中你不必编写一个setter方法来执行此操作,这可能就是你没有得到建议的原因。
在您的示例中,如果您想要一个包含getter和setter的authPresenter
字段,您可以将其声明为var
,kotlin会提供其余内容:
class AuthenticationView(...) {
var authPresenter: AuthPresenter? = null
}
这给了我们一个可以为空的AuthPresenter
。这是一种惯用的方式:
val view = AuthenticationView(...)
view.authPresenter = AuthPresenter(...)
在有保障的情况下,对.authPresenter = someObject
的来电变为setAuthPresenter(someObject)
。
如果你是用Java调用它,你会看到为你自动生成getAuthPresenter()
和setAuthPresenter()
。
简而言之:Kotlin没有选项的原因,是因为有一种更惯用的方法可以做到这一点。
答案 1 :(得分:0)
根据Todd的答案,不需要编写像java这样的setter / getter方法。
如果我们要声明我们的setter / getter,我们必须声明一个var
并写下get()和set(value),如下所示:
class AuthenticationView(...) {
var authPresenter: AuthPresenter? = null
get() = field
set(value) {
field = value
....
}
我认为这是一个属性领域,我见过这样的东西 C#
然后,如果您想设置或获取authPresenet,请执行以下操作:
//set
authenticationView.authPresenter = object
//get
object = authenticationView.authPresenter
我们可以在kotlin中看到像这样的代码,例如设置TextView
的文字或View
的背景