1

次のようなクラスメンバー関数を持つ:

private fun getData1(uuid:String): IData? {
    ...
}
private fun getData2(uuid:String): IData? {
    ...
}
private fun getData3(uuid:String): IData? {
    ...
}

関数参照配列に入れたい:

var funArray = ArrayList<(uuid: String) -> IData?> (
     this::getData1, 
     this::getData2, 
     this::getData3)

コンパイルされません:

None of the following functions can be called with the arguments 
supplied: 
public final fun <E> <init>(): kotlin.collections.ArrayList<(uuid: String) -> IData?> /* = java.util.ArrayList<(uuid: String) -> IData?> */ defined in kotlin.collections.ArrayList ...

もしそうなら:

var funArray: ArrayList<(uuid: String) -> IData?> = ArrayList<(uuid: String) -> IData?>(3)

funArray[0] = this::getData1 //<== crash at here
funArray[1] = this::getData2
funArray[2] = this::getData3

例外を伴うクラッシュ

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

関数参照を配列に入れる方法は?

4

1 に答える 1