これは一般的で些細なことかもしれませんが、具体的な答えを見つけるのに苦労しているようです。C# にはデリゲートの概念があり、これは C++ の関数ポインターの考え方と密接に関連しています。Java には同様の機能がありますか? ポインターがあまりないことを考えると、これに対する最善の方法は何ですか? 明確に言うと、ここではファーストクラスについて話しています。
ベストアンサー1
関数ポインタのような機能のための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);