对于可为null的类成员,建议使用Kotlin double bang的方法是什么
在kotlin中,如果变量可为null,kotlin将要求使用!!或者在使用它之前检查空值。 在拥有可为null的类成员的情况下,在该成员所在的类中,kotlin将警告检查可为null的类对于可为null的类成员,建议使用Kotlin double bang的方法是什么,kotlin,nullable,Kotlin,Nullable,在kotlin中,如果变量可为null,kotlin将要求使用!!或者在使用它之前检查空值。 在拥有可为null的类成员的情况下,在该成员所在的类中,kotlin将警告检查可为null的类 class ClassWithNullableMemebr { Var nullableMember: OtherClass? = null; constructor (obj: OtherClass) { nullableMember = obj }
class ClassWithNullableMemebr {
Var nullableMember: OtherClass? = null;
constructor (obj: OtherClass) {
nullableMember = obj
}
fun foo() {
nullableMember!!.doSomething()
}
fun getTheOtherClassMember : OtherClass {
return nullableMember!!
}
}
如果保证在构造函数中初始化nullableMember,如何避免使用
在Java或其他语言中,他们可以检查null一次,并在设计时抛出成员是否永远不应该为null。然后在类中,成员将被引用而不必担心
有人建议你这样做
if (nullableMember != null) {
nullableMember!!.doSomething()
}
这将仍然需要!!即使在检查之后,它也会使代码看起来不漂亮
对于这种情况,真的使用了?。与使用没有太大区别!!由于nullableMember是在构造函数中赋值的,并且函数返回,所以它不能避免
我认为如果在使用!!不应该被认为是糟糕的编码风格。没有其他办法可以避免
是否有人建议避免使用“!!”在这种情况下 如果您确定该变量的值不为null,则应将其定义为不可为null 在此之后,有两种方法可以避免编译器警告和可见变量初始化:
如果需要在代码中的某个地方将此变量的值设置为null,恐怕您必须使用因为没有更好的方法可以做到这一点。如果您确定该变量的值不会为null,则应将其定义为不可为null 在此之后,有两种方法可以避免编译器警告和可见变量初始化:
null
如果它保证在构造函数中被初始化为非null,那么正如Oliver的评论所说,它不应该为null!如果仅在构造函数(包括辅助构造函数)或init
块中设置,则应为val
即该类应简化为
class ClassWithNullableMemebr(val nullableMember: OtherClass) {
fun foo() {
nullableMember.doSomething()
}
}
如果保证在构造函数中初始化nullableMember
你的情况不是这样。如果您调用辅助构造函数,它将被初始化,但是您还有一个主的无参数构造函数,它将它初始化为null
如果它保证在构造函数中被初始化为非null,那么正如Oliver的评论所说,它不应该为null!如果仅在构造函数(包括辅助构造函数)或init
块中设置,则应为val
即该类应简化为
class ClassWithNullableMemebr(val nullableMember: OtherClass) {
fun foo() {
nullableMember.doSomething()
}
}
如果保证在构造函数上初始化它,那么它根本不需要为null 你可以有:
class ClassWithMember(val member: OtherClass) {
fun foo() {
member.doSomething()
}
}
如果保证在构造函数上初始化它,那么它根本不需要为null 你可以有:
class ClassWithMember(val member: OtherClass) {
fun foo() {
member.doSomething()
}
}
如果它被保证为非null,那么为什么不让它为非null?如果它被保证为非null,那么为什么不让它为非null?