ParameterTypeとしての機能を使用しての使用getDeclaredMethod

DavidGSola:

私は、ヘッダがあるプライベートメソッドを持っています。

private fun setNumericListener(editText: EditText, onValueChanged:(newValue: Double?) -> Unit)

私はこのように、このメソッドを呼び出します。 setNumericListener(amountEditText, this::onAmountChanged)

私はクラスからgetDeclaredMethodを使用したいhttps://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getDeclaredMethod(java.lang.String,%20java.lang.Class .. 。)私のプライベートメソッドへの参照を取得しますsetNumericListenergetDeclaredMethodパラメータの型の配列を受け取りClass<?>... parameterTypesますが、私は私のプライベートメソッドは、パラメータとしてメソッド参照を持っている場合、パラメータの型の配列を設定する方法については考えています。

感謝

ロビーCornelissen:

関数参照がタイプとして解決されますkotlin.jvm.functions.Function1

これは、あなたが使用できることを意味getDeclaredMethod()呼び出すことによって、メソッド参照を取得するには:

getDeclaredMethod("setNumericListener", EditText::class.java, Function1::class.java)

ここでは、完全な抜粋です:

fun main(vararg args: String) {
    val method = Test::class.java.getDeclaredMethod("setNumericListener",
            EditText::class.java, Function1::class.java)

    println(method)
}

// Declarations
class Test {
    private fun setNumericListener(editText: EditText,
            onValueChanged: (d: Double?) -> Unit) {}
}

class EditText {}

どのプリント:

private final void Test.setNumericListener(EditText,kotlin.jvm.functions.Function1)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=189558&siteId=1