在 Java 中,我正在寻找一个通用模板,它意味着给定类型的数组(比如Foo
),将允许对数组进行实例方法调用。在幕后,这将转化为遍历数组中的所有 Foo 实例,并在每个实例上调用实例方法。
也许一些代码会更好地证明这一点:
public class Foo{
public Foo(){}
public void Method1(){}
}
所以你有了:
Foo foo = new Foo();
foo.Method1();
但是您能否为您的自定义类型制作一些通用模板,从而使这种事情成为可能:
Foo[] foos = new Foo[]{new Foo(),new Foo(), new Foo()};
foos.Method1();
这本质上是语法糖:
foreach(Foo f : foos){
f.Method1();
}
我的动机是有人可以使用可变参数,这样:
someHelper(fooInstance1,fooInstance2).Method1()
哪里someHelper()
返回Foo[]
.
如果每次调用都返回一个值,那么将其包装到一个返回值数组(其中)Method1()
中会更好。ReturnVals.size == Foos.size
在最坏的情况下,我必须为我需要为此工作的每种类型编写一个单独的类来实现这一点,可能使用接口来描述适用于单个实例和实例数组的功能。
是否有任何 Java 魔法、设计模式或通用 jiggery-pokery 可以优雅地实现这一点?
此外,如果没有,是否有任何语言在本质上促进了这一点?
我很欣赏它不适用于所有场景,但我认为这是由程序员自行决定的。
非常感谢