日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kotlin实战指南二:变量、常量、静态常量

發(fā)布時間:2024/9/30 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kotlin实战指南二:变量、常量、静态常量 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)載請標(biāo)明出處:https://blog.csdn.net/zhaoyanjun6/article/details/87811333
本文出自【趙彥軍的博客】


Kotlin初體驗二:變量、常量、靜態(tài)常量

    • 變量
    • 常量
    • 靜態(tài)常量
    • 伴生
    • 實戰(zhàn)演練

變量

Java中的變量

public class App {private String name; //定義一個變量 }

Kotlin中的變量,用 var 修飾

class App {var name = "abc" }

這樣寫,相當(dāng)于

public final class App {@NotNullprivate String name = "abc";@NotNullpublic final String getName() {return this.name;}public final void setName(@NotNull String var1) {Intrinsics.checkParameterIsNotNull(var1, "<set-?>");this.name = var1;} }

Kotlin定義的變量,默認(rèn)有 getXXX 、 setXXX 方法

常量

Java定義一個常量,用 final 修飾

public class App {final String NAME = "zhaoyanjun"; //定義一個常量 }

Kotlin定義一個常量,用 val 修飾

class App {val NAME = "zhaoyanjun" }

這樣寫,相當(dāng)于

public final class App {@NotNullprivate final String NAME = "zhaoyanjun";@NotNullpublic final String getNAME() {return this.NAME;} }

Kotlin定義的常量,默認(rèn)有 getXXX 方法,沒有 setXXX 方法

靜態(tài)常量

Java中的靜態(tài)常量, 用 final 、static 修飾

public class App {final static String NAME = "zhaoyanjun"; //定義一個靜態(tài)常量 }

Kotlin定義一個靜態(tài)常量,用 object、val 修飾
用object 修飾的類為靜態(tài)類,里面的方法和變量都為靜態(tài)的。

object App {val NAME = "zhaoyanjun"fun add(a: Int, b: Int): Int {return a + b;} }

這樣寫,相當(dāng)于

public final class App {@NotNullprivate static final String NAME = "zhaoyanjun";public static final App INSTANCE;@NotNullpublic final String getNAME() {return NAME;}public final int add(int a, int b) {return a + b;}static {App var0 = new App();INSTANCE = var0;NAME = "zhaoyanjun";} }

Kotlin 代碼調(diào)用

App.NAME //調(diào)用靜態(tài)常量 App.add(3,5) //調(diào)用靜態(tài)方法

綜上,我就完美的解決了靜態(tài)常量,靜態(tài)方法的問題。但是等等,我們發(fā)現(xiàn)一個問題,用 object 修飾的類中所有的方法都成了靜態(tài)了,這不是我們希望看到的結(jié)果,我們希望能夠在一個普通類中,可以有靜態(tài)方法,也可以有非靜態(tài)方法。有什么解決方案嗎?

答案當(dāng)然是有的,就是下面我們要講的伴生。

伴生

Kotlin中實現(xiàn)伴生對象用 companion object 來實現(xiàn)

class App {companion object {//靜態(tài)常量val NAME = "zhaoyanjun"//靜態(tài)方法fun add(a: Int, b: Int): Int {return a + b}}//非靜態(tài)常量val age = 20//非靜態(tài)方法fun remove(a: Int, b: Int): Int {return a - b}}

這樣寫,就相當(dāng)于

public final class App {private final int age = 20;@NotNullprivate static final String NAME = "zhaoyanjun";public static final App.Companion Companion = new App.Companion((DefaultConstructorMarker)null);public final int getAge() {return this.age;}public final int remove(int a, int b) {return a - b;}public static final class Companion {@NotNullpublic final String getNAME() {return App.NAME;}public final int add(int a, int b) {return a + b;}private Companion() {}} }

調(diào)用

//調(diào)用靜態(tài)常量,靜態(tài)方法 App.NAME App.add(3, 4)//調(diào)用非靜態(tài)常量、非靜態(tài)方法 App().age App().remove(4, 3)

實戰(zhàn)演練

在Android開發(fā)中,我們通常需要在 Application 類中提供一個 Application 實例和 ApplicationContext 實例

Java 代碼實現(xiàn)方式

public class App extends Application {public static Application mInst;public static Context mContext;@Overridepublic void onCreate() {super.onCreate();mInst = this;mContext = getApplicationContext();} }

Kotlin實現(xiàn)方式

class App : Application() {override fun onCreate() {super.onCreate()mInst = thismContext = applicationContext}companion object {var mInst: Application? = nullvar mContext: Context? = null} }

調(diào)用

App.mInstApp.mContext

個人微信號:zhaoyanjun125 , 歡迎關(guān)注

總結(jié)

以上是生活随笔為你收集整理的Kotlin实战指南二:变量、常量、静态常量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。