我希望创建一个特定类型的Java接口(尽管这同样适用于常规类)。该接口需要包含一些方法,比如说invoke;根据提供的通用类型参数,它将被调用并带有不同数量的参数。
例如:
为了简单说明这个如何使用(并提供一些上下文),考虑一个类Delegator:该类采用不同数量的泛型类型,并具有一个方法 - invoke,带有这些参数类型。该方法将其参数传递给列表中的对象:IDelegate的实例,该实例采用相同的泛型类型。这使得Delegator可以在不必为每个特定的参数类型列表创建新类的情况下选择几个委托方法(在IDelegate中定义)。
是否有类似的东西可用?我已经阅读了C++中的variadic templates,但在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中定义)。
是否有类似的东西可用?我已经阅读了C++中的variadic templates,但在Java中找不到类似的东西。如果没有,模拟相同数据模型的最清洁方法是什么?
Pair<S,T>
就足够了。但是由于没有人想要一个Pair<Integer,Pair<String,Pair<Byte,Pair<Float, Long>>>>
这样的东西,所以通常会用不同的方法来解决这个问题。要么放弃类型安全,要么使用像 http://www.javatuples.org/ 这样的库。 - Marco13