メソッドリファレンスを使用してスーパークラスメソッドを参照するにはどうすればよいですか?スーパークラスメソッドへの参照
Java 8ではSubClass.super::method
を実行できます。
コトルの構文は何ですか?
お返事をお待ちしております。バーナード・ロシャへ
結論
ありがとう! 構文はSubClass::method
です。
ただし、注意してください。私の場合、サブクラスはジェネリッククラスでした。
MySubMap<K, V>::method
のように宣言することを忘れないでください。
EDIT
それはまだKotlinでは動作しません。
ハーズは、スーパークラスのメソッドへのメソッド参照のJavaの8の例です:
public abstract class SuperClass {
void method() {
System.out.println("superclass method()");
}
}
public class SubClass extends SuperClass {
@Override
void method() {
Runnable superMethodL =() -> super.method();
Runnable superMethodMR = SubClass.super::method;
}
}
私はまだKotlinで同じことを行うことができないんだけど...
EDIT
これは私がKotlinでそれを達成しようとした方法の例です:
open class Bar {
open fun getString(): String = "Hello"
}
class Foo : Bar() {
fun testFunction(action:() -> String): String = action()
override fun getString(): String {
//this will throw an StackOverflow error, since it will continuously call 'Foo.getString()'
return testFunction(this::getString)
}
}
それは不可能です
はまだKotlinにそうする
...
override fun getString(): String {
//this should call 'Bar.getString' only once. No StackOverflow error should happen.
return testFunction(super::getString)
}
...
結論:
は、私はそのような何かを持っていると思います。
私は機能レポートを提出しました。これは、ここで見つけることができます:KT-21103 Method Reference to Super Class Method
あなたはこれをKotlinでどうしようとしていますか? –
@BernardoRocha確かに。私は私の質問に例を追加しました。 – Poweranimal