私は最近、Javaの理解で説明できないコードを見つけました。それはFunc
インタフェースを実装するクラスを取得する必要がありますように私は、その周りにAction.ITEMが構築されている方法を私の頭をラップすることはできません奇妙な構造、静的メソッドをクラスに変換する
public class StaticMethodClass {
static void IDK(Integer i, String somethingElse) {
System.out.println("It has been done");
}
public static void main(String... whatever) {
Action.ITEM.doStuff();
}
}
interface Func {
void exec(Integer i, String somethingElse);
}
enum Action {
ITEM(StaticMethodClass::IDK);
private Func f;
Action(Func f){
this.f = f;
}
void doStuff() {
this.f.exec(1, "huh");
}
}
一部:私は建設の同じ種類のこの小さなバージョンを作成しました。代わりに、暗黙のうちに変換されるメソッドが渡されます。
私の質問は、これがどのように機能し、どのルールがここに当てはまるかです。
メソッド参照についてお読みください。 – Eran
'StaticMethodClass :: IDK'は関数への参照であり、その関数は' Func.exec() 'メソッドと同じパラメータと同じ戻り型を持ちます。したがってこれは既存のメソッドとのインタフェースを実装する短い形式です –
Java docsを参照してください。https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html – Akshay