Function as Objectの一例。
Javaでやるとどうなる?

using System;

delegate T0 Function<T0, T1, T2>(T1 arg1, T2 arg2);

class Test {

  // 引数をトレースするだけ
  static object Func1(int n1, int n2) {
    Console.WriteLine("n1 = {0}, n2 = {1}", n1, n2);
    return null;
  }

  // 引数を足して返す
  static int Func2(int n1, int n2) {
    return n1 + n2;
  }