Kotlinでオブジェクト(object)の動作確認

/


objectを使っていくつか遊びがてら実験してみた。オブジェクトに関してもやもやしていたが少しだけつかめてきた気がする。



companion object でシングルトンの動作確認


Kotlinでcompanion objectを使ってJavaのStatic変数のような動作を行ってみた。次のHogeクラスはシングルトンパターンの基本的な形である。



実行結果は次の通りとなる。確かにcompanion objectで囲まれた変数counterはインスタンスが一つだけとなっているようだ。

hoge1 : 0
hoge1 : 1
hoge1 : 2
hoge1 : 3
hoge2 : 4
hoge2 : 5
hoge2 : 6
hoge1 : 7



メソッドの関数オブジェクト


次のプログラム内のように、関数自体をオブジェクトとして扱う使うことが出来る。ただし、Hogeクラスのインスタンスを生成する必要がある。



実行結果は次の通り。
countUp1 : 0
countUp1 : 1
countUp1 : 2
countUp1 : 3



インタフェースとオブジェクトの組み合わせ


次のプログラムはOkHttpのCallbackで使うようなパターンだ。



実行結果は次の通りとなる。

counter セット (0)
counter ゲット (0)
counter セット (1)
counter ゲット (1)
counter ゲット (1)
counter セット (2)
counter ゲット (2)
counter ゲット (2)
counter セット (3)
counter ゲット (3)
counter ゲット (3)
counter セット (4)
counter ゲット (4)
counter ゲット (4)
counter セット (5)
counter ゲット (5)



参考





関連記事


非同期 & ネットワーク処理
* はじめてRetrofitを使ってみる (Android Kotlin)
* 非同期処理でCoroutine(コルーチン)を使ってみる (Android Kotlin)
* OkHttpでHTTP通信 (Android Kotlin)
* スレッド処理 (Android Kotlin)

View & レイアウト
* リサイクラービューを使ってリスト表示 (Android Kotlin)
* 角丸表現 (Android Kotlin)
* onSaveInstanceStateで画面回転時の状態の保存と復元 (Android Kotlin)
* ListViewを簡単なモデルで理解しよう (Android Kotlin)
* バネアニメーション (Android Kotlin)
* startActivityForResultを使ってみる (Android Kotlin)
* ActivityとFragmentの連携を理解する (Android Kotlin)
* DataBinding機能を使ってみる (Android Kotlin)
* タッチイベントのフック (Android Kotlin)
* DialogFragmentを使ったダイアログの表示 (Android Kotlin)

サウンド
* これってSoundPoolのバグ?(Android Kotlin)
* SoundPoolを使ってゲームの効果音を再生する (Android Kotlin)

データ & オブジェクト
* Kotlinでオブジェクト(object)の動作確認
*
データクラスとタプル (Android Kotlin)
* Null安全、ぬるぽバイバイ (Android Kotlin)