Java 在所有ArrayList上调用方法<;类型>;项目?

Java 在所有ArrayList上调用方法<;类型>;项目?,java,arraylist,reflection,Java,Arraylist,Reflection,每次我想调用arraylist上的方法时,我不想在外部使用foreach,而是希望能够调用它 ArrayList<String>.setText(); //Example. ArrayList.setText()//例子。 我尝试使用反射,但我不确定如何实现它 public class Array extends ArrayList { public Array(Collection collection) { super(collection);

每次我想调用arraylist上的方法时,我不想在外部使用foreach,而是希望能够调用它

ArrayList<String>.setText(); //Example.
ArrayList.setText()//例子。
我尝试使用反射,但我不确定如何实现它

public class Array extends ArrayList
{
    public Array(Collection collection) {
        super(collection);
    }

    public void invokeMethod(String nameOfMethod, Object object)
    {
        for(int index = 0; index < size(); index++){
            get(index).getClass().getMethod(nameOfMethod, object.getClass());
        }

        //Example of a single object invocation.
        try {
            method = obj.getClass().getMethod(methodName, param1.class, param2.class, ..);
        } catch (SecurityException e) {
            // ...
        } catch (NoSuchMethodException e) {
            // ...
        }
    }
}
公共类数组扩展了ArrayList
{
公共数组(集合){
超级(收集);
}
public void invokeMethod(方法的字符串名称,对象对象)
{
对于(int index=0;index

有人知道如何实现这一点吗?

Java8已经提供了这种功能,所以自己尝试实现它是没有意义的

例如:

ArrayList<SomeClass> list = ...;
list.forEach(o -> o.SomeMethod());

您可以在Java8之前的版本中构建自己的forEach。您只需要一个接口和匿名类

import java.util.ArrayList;
import java.util.List;

public class Test {

    public static void main(String... args) {
        List<MyClass> list = new ArrayList<>();
        for(int i = 0; i < 10; i++) {
            list.add(new MyClass());
        }
        forEach(list, new Consumer<MyClass>() {
            @Override
            public void accept(MyClass t) {
                t.beep();
            }
        });
    }

    public static <T> void forEach(Iterable<T> iterable, Consumer<T> consumer) {
        for (T t : iterable) {
            consumer.accept(t);
        }
    }
}

interface Consumer<T> {
    void accept(T t);
}

class MyClass {

    public void beep() {
        System.out.println("beep");
    }
}
import java.util.ArrayList;
导入java.util.List;
公开课考试{
公共静态void main(字符串…参数){
列表=新的ArrayList();
对于(int i=0;i<10;i++){
添加(新的MyClass());
}
forEach(列表,新消费者(){
@凌驾
公共无效接受(MYT类){
t、 beep();
}
});
}
公共静态无效forEach(Iterable Iterable,Consumer){
for(T:iterable){
消费者接受(t);
}
}
}
接口消费者{
无效接受(T);
}
类MyClass{
公共无效哔哔声(){
System.out.println(“嘟嘟声”);
}
}

我无法使用Java 8,因为Android:-/-但感谢您的洞察力。
import java.util.ArrayList;
import java.util.List;

public class Test {

    public static void main(String... args) {
        List<MyClass> list = new ArrayList<>();
        for(int i = 0; i < 10; i++) {
            list.add(new MyClass());
        }
        forEach(list, new Consumer<MyClass>() {
            @Override
            public void accept(MyClass t) {
                t.beep();
            }
        });
    }

    public static <T> void forEach(Iterable<T> iterable, Consumer<T> consumer) {
        for (T t : iterable) {
            consumer.accept(t);
        }
    }
}

interface Consumer<T> {
    void accept(T t);
}

class MyClass {

    public void beep() {
        System.out.println("beep");
    }
}