ネストされたクラスのスコープの範囲を知りたい人むけ。
Androidではアクティビティのインスタンスを所有していろいろ操作するということが難しいそのため、アクティビティのクラス外に別クラスを作って、そこでイベントを受けてしまうとアクティビティのメソッドなどを実施できなくなることがある。
そのためクラスをネストすると、クラス内でイベント等を受信できるので非常に便利。ただ、そのクラスにはスコープの制限があるため、親のクラスのメンバ変数にアクセスできることが重要になる。
Androidではアクティビティのインスタンスを所有していろいろ操作するということが難しいそのため、アクティビティのクラス外に別クラスを作って、そこでイベントを受けてしまうとアクティビティのメソッドなどを実施できなくなることがある。
そのためクラスをネストすると、クラス内でイベント等を受信できるので非常に便利。ただ、そのクラスにはスコープの制限があるため、親のクラスのメンバ変数にアクセスできることが重要になる。
class ParentClass() {
//親のクラスにメンバ変数を設定する
private val mTest: String = ""
//通常のネストされたクラスでは親のメンバ変数にはアクセスできない
class TestClass0() {
//var str: String = mTest エラーになる
}
//インナークラスにするとアクセスできる
inner class TestClass1() {
var str: String = mTest
}
無名クラスの場合はinnerと同じスコープになる
var TestClass2 = object {
var str: String = mTest
}
}