私はのJavaで特定のタイプのインタフェースを作成しようとしています(通常のクラスにも同じですが)。このインタフェースには、たとえばinvoke
のようないくつかのメソッドが必要です。提供されるジェネリック型引数に応じて、さまざまな量のパラメータで呼び出されます。一例として、Javaでは、任意の量のジェネリック型パラメータを指定できますか?
:
public interface Foo<T...> {
public void invoke(T... args);
}
// In some other class
public static Foo<Float, String, Integer> bar = new Foo<Float, String, Integer>() {
@Override
public void invoke(Float arg1, String arg2, Integer arg3) {
// Do whatever
}
};
これはを使用(およびいくつかのコンテキストを提供する)ことができる方法、簡単に説明するためには、クラスDelegator
を考えてみましょう。このクラスは、一般的な種類の様々な数をとり、これらのパラメータタイプを持つ単一のメソッド(invoke
)があります。このメソッドは、そのパラメータをリスト内のオブジェクトに渡します:IDelegate
のインスタンス。同じジェネリック型を取ります。これにより、Delegator
は、パラメータタイプの特定のリストごとに新しいクラスを作成することなく、いくつかのデリゲートメソッド(IDelegate
で定義)の中から選択することができます。
このようなものはありますか?私はvariadic templatesをC++で読んだことがありますが、Javaでこれと似たものは見つかりません。そんなことはありますか?そうでない場合、同じデータモデルをエミュレートする最もクリーンな方法は何でしょうか?
このようにするには、 'Pair
'で十分でしょう。しかし、誰も 'ペア >>>'を望んでいないので、このようなことは通常異なる方法で解決されます。型の安全性を完全に破棄するか、http://www.javatuples.org/のような図書館で –
Marco13