草庐IT

java - Kotlin 中的变量,与 Java : 'var' vs. 'val' 的区别?

我正在努力学习Kotlin.Kotlin中的val、var和internal与Java相比是什么?在Java中:RadioGroupradioGroup;RadioButtonbutton;Buttonsubmit;转换后显示:internalvarradioGroup:RadioGroupinternalvarbutton:RadioButtoninternalvarsubmit:Button 最佳答案 val和var是可用于声明变量(和属性)的两个关键字。不同之处在于,使用val会给你一个只读变量,这与在Java中使用final

parameters - 无法为 Kotlin 中 fun 中的局部变量重新分配 Val 的编译时错误

在有趣的交换中,我试图用b1更改a1的值,但它显示“val无法重新分配编译时错误”。如果我不能这样改变,那怎么可能呢?funswap(a1:String,b1:String){valtemp=a1a1=b1b1=temp}注意:这只是一个示例,用于了解为什么我无法像在Java中那样重新分配局部变量。 最佳答案 在Kotlin中,val声明了最终的、只读的、引用-这正是编译器错误告诉你的内容Valcannotbereassigned一旦为val赋值,就无法更改。如果您希望能够重新分配它,则必须将其声明为var在Kotlin中,方法参数

parameters - 无法为 Kotlin 中 fun 中的局部变量重新分配 Val 的编译时错误

在有趣的交换中,我试图用b1更改a1的值,但它显示“val无法重新分配编译时错误”。如果我不能这样改变,那怎么可能呢?funswap(a1:String,b1:String){valtemp=a1a1=b1b1=temp}注意:这只是一个示例,用于了解为什么我无法像在Java中那样重新分配局部变量。 最佳答案 在Kotlin中,val声明了最终的、只读的、引用-这正是编译器错误告诉你的内容Valcannotbereassigned一旦为val赋值,就无法更改。如果您希望能够重新分配它,则必须将其声明为var在Kotlin中,方法参数

reference - 为什么我不能从引用对象的 val 或 typealias 引用嵌套对象?

考虑以下代码:objectSomeObjectA{objectSomeObjectB{vala="test"}}valX=SomeObjectAtypealiasY=SomeObjectASomeObjectA.SomeObjectB//worksX.SomeObjectB//errorY.SomeObjectB//error我不能使用引用外部对象的val或typealias来引用嵌套对象(在外部对象中)。为什么? 最佳答案 编译器错误来自java,kotlinobjects转换为javaclasses如下:publicfinalc

reference - 为什么我不能从引用对象的 val 或 typealias 引用嵌套对象?

考虑以下代码:objectSomeObjectA{objectSomeObjectB{vala="test"}}valX=SomeObjectAtypealiasY=SomeObjectASomeObjectA.SomeObjectB//worksX.SomeObjectB//errorY.SomeObjectB//error我不能使用引用外部对象的val或typealias来引用嵌套对象(在外部对象中)。为什么? 最佳答案 编译器错误来自java,kotlinobjects转换为javaclasses如下:publicfinalc

inheritance - 错误或功能 : Kotlin allows to change 'val' to 'var' in inheritance

我刚刚开始探索Kotlin语言。我正在为继承、var&val和副作用而苦苦挣扎。如果我用valx声明一个特征A并在AImpl中覆盖x,则可以将其覆盖为var(参见下面的代码)。令人惊讶的是,A中的print()方法会受到x重新分配的影响,即使x是A。这是错误还是功能?代码:traitA{funprint(){println("A.x=$x")}valx:Int;}classAImpl(x:Int):A{overridevarx=x;//seemslikexcanbeoverridenas`var`}funmain(args:Array){vala=AImpl(2)a.print()//

inheritance - 错误或功能 : Kotlin allows to change 'val' to 'var' in inheritance

我刚刚开始探索Kotlin语言。我正在为继承、var&val和副作用而苦苦挣扎。如果我用valx声明一个特征A并在AImpl中覆盖x,则可以将其覆盖为var(参见下面的代码)。令人惊讶的是,A中的print()方法会受到x重新分配的影响,即使x是A。这是错误还是功能?代码:traitA{funprint(){println("A.x=$x")}valx:Int;}classAImpl(x:Int):A{overridevarx=x;//seemslikexcanbeoverridenas`var`}funmain(args:Array){vala=AImpl(2)a.print()//

android - 在 Kotlin 构造函数参数中什么情况下需要 val/var?

正确的代码:classMainActHandler(valweakActivity:WeakReference):Handler(){overridefunhandleMessage(msg:Message?){valtrueAct=weakActivity.get()?:returnif(msg?.what==ConversationMgr.MSG_WHAT_NEW_SENTENCE){valsentence=msg.objasString?trueAct.conversation.text=sentence}super.handleMessage(msg)}}无法解析的代码:cla

android - 在 Kotlin 构造函数参数中什么情况下需要 val/var?

正确的代码:classMainActHandler(valweakActivity:WeakReference):Handler(){overridefunhandleMessage(msg:Message?){valtrueAct=weakActivity.get()?:returnif(msg?.what==ConversationMgr.MSG_WHAT_NEW_SENTENCE){valsentence=msg.objasString?trueAct.conversation.text=sentence}super.handleMessage(msg)}}无法解析的代码:cla

android - Kotlin:const val 与 val

我理解在Kotlin中constval用于声明常量,而val用于只读属性。但是,我想知道在以下情况下,哪个更适合使用。假设我有一个fragment需要一个用于saveInstanceState和restoreInstanceState的key。我想知道以下2个选项中哪一个更好:选项1:classMyFragment{privatevalMY_KEY="my_key"...}选项2:privateconstvalMY_KEY="my_key"//declaredinthesamefile.classMyFragment{...}我更喜欢#option2,因为它清楚地表明MY_KEY是一个