Table of Contents
Java における static な変数やメソッドを Kotlin で定義する方法についてです。
クラスを跨いで使いたい定数などを Kotlin で定義したい場合、パッケージ文やインポート文と同じ位置(package-level)にそれを書きます。
複数のクラスで利用できる定数の定義
例えば Java では以下のように定義して、
public static final String DEBUG_TAG = "myDebugTag"
以下のように他クラスから定数を呼び出していました(DEBUG_TAGは任意の定数名です)。
クラス名.DEBUG_TAG
Kotlin では package-level に以下のように定数を定義できます。
const val DEBUG_TAG = "myDebugTag"
サンプルコード
以下のコードは、実際に複数のクラスから定数を呼び出す例です。
プログラム全体で使用できる定数を、デバッグログのタグに設定しています。
package com.example.test import android.content.Context import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.util.Log import android.view.View // クラスを跨いで使用できる定数 const val DEBUG_TAG = "myDebugTag" // 1つ目のクラス class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) Log.i(DEBUG_TAG, "定数の利用1") } } // 別のクラス class MyView(context: Context): View(context) { init { Log.i(DEBUG_TAG, "定数の利用2") } }
以上が Kotlin で複数のクラスから使用できる定数を定義する方法です。
関数(fun)も同じように package-level に定義することができます。
static なメソッドの定義には「companion object」と呼ばれる仕組みを利用する方法もあります。これについては別の機会に紹介したいと思います。