我正在努力学习Kotlin.Kotlin中的val、var和internal与Java相比是什么?在Java中:RadioGroupradioGroup;RadioButtonbutton;Buttonsubmit;转换后显示:internalvarradioGroup:RadioGroupinternalvarbutton:RadioButtoninternalvarsubmit:Button 最佳答案 val和var是可用于声明变量(和属性)的两个关键字。不同之处在于,使用val会给你一个只读变量,这与在Java中使用final
在有趣的交换中,我试图用b1更改a1的值,但它显示“val无法重新分配编译时错误”。如果我不能这样改变,那怎么可能呢?funswap(a1:String,b1:String){valtemp=a1a1=b1b1=temp}注意:这只是一个示例,用于了解为什么我无法像在Java中那样重新分配局部变量。 最佳答案 在Kotlin中,val声明了最终的、只读的、引用-这正是编译器错误告诉你的内容Valcannotbereassigned一旦为val赋值,就无法更改。如果您希望能够重新分配它,则必须将其声明为var在Kotlin中,方法参数
在有趣的交换中,我试图用b1更改a1的值,但它显示“val无法重新分配编译时错误”。如果我不能这样改变,那怎么可能呢?funswap(a1:String,b1:String){valtemp=a1a1=b1b1=temp}注意:这只是一个示例,用于了解为什么我无法像在Java中那样重新分配局部变量。 最佳答案 在Kotlin中,val声明了最终的、只读的、引用-这正是编译器错误告诉你的内容Valcannotbereassigned一旦为val赋值,就无法更改。如果您希望能够重新分配它,则必须将其声明为var在Kotlin中,方法参数
考虑以下代码:objectSomeObjectA{objectSomeObjectB{vala="test"}}valX=SomeObjectAtypealiasY=SomeObjectASomeObjectA.SomeObjectB//worksX.SomeObjectB//errorY.SomeObjectB//error我不能使用引用外部对象的val或typealias来引用嵌套对象(在外部对象中)。为什么? 最佳答案 编译器错误来自java,kotlinobjects转换为javaclasses如下:publicfinalc
考虑以下代码:objectSomeObjectA{objectSomeObjectB{vala="test"}}valX=SomeObjectAtypealiasY=SomeObjectASomeObjectA.SomeObjectB//worksX.SomeObjectB//errorY.SomeObjectB//error我不能使用引用外部对象的val或typealias来引用嵌套对象(在外部对象中)。为什么? 最佳答案 编译器错误来自java,kotlinobjects转换为javaclasses如下:publicfinalc
我刚刚开始探索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()//
我刚刚开始探索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()//
正确的代码: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
正确的代码: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
我理解在Kotlin中constval用于声明常量,而val用于只读属性。但是,我想知道在以下情况下,哪个更适合使用。假设我有一个fragment需要一个用于saveInstanceState和restoreInstanceState的key。我想知道以下2个选项中哪一个更好:选项1:classMyFragment{privatevalMY_KEY="my_key"...}选项2:privateconstvalMY_KEY="my_key"//declaredinthesamefile.classMyFragment{...}我更喜欢#option2,因为它清楚地表明MY_KEY是一个