1. ホーム
  2. java

[解決済み] Javaにおける関数ポインタ

2022-01-30 10:31:14

質問事項

よくある些細なことかもしれませんが、具体的な答えが見つからずに困っているようです。C#にはデリゲートという概念があり、これはC++の関数ポインタの考えと強く関連しています。Javaにも同様の機能はあるのでしょうか?ポインタがやや存在しないことを考えると、これについては何がベストな方法なのでしょうか?そして、明確にするために、私たちはここでファーストクラスの話をしています。

どのように解決するのか?

関数ポインタのような機能を実現するJavaのイディオムは、インターフェースを実装した無名クラスで、例えば

Collections.sort(list, new Comparator<MyClass>(){
    public int compare(MyClass a, MyClass b)
    {
        // compare objects
    }
});

更新しました。 は、Java 8以前のJavaバージョンで必要です。今は、ラムダというもっと素敵な代替手段がある。

list.sort((a, b) -> a.isGreaterThan(b));

とメソッドの参照。

list.sort(MyClass::isGreaterThan);