假设我是否要在列表中添加对象(指令)并从该列表中依次调用?例如
public static void main(String [] args){
List list = new ArrayList();
list.add(System.out.println("1"))
list.add(System.out.println("2"))
list.add(System.out.println("3"))
try{
for(Object i : list){
i.invoke() //....like this i want to invoke each syso
}
catch(Exception e){
e.printStackTrace();
}
}
}
您不能在列表中存储“指令”。您只能存储对象。但是对象有方法,您可以调用以下方法:
List<Runnable> list = new ArrayList<>();
list.add(() -> System.out.println("1"));
list.add(() -> System.out.println("2"));
list.add(() -> System.out.println("3"));
for (Runnable r : list) {
r.run();
}
上面使用的是lambda,自Java 8起可用。但是您可以在以前的版本中使用匿名类:
List<Runnable> list = new ArrayList<>();
list.add(new Runnable() {
@Override
public void run() {
System.out.println("1");
}
});
list.add(new Runnable() {
@Override
public void run() {
System.out.println("2");
}
});
list.add(new Runnable() {
@Override
public void run() {
System.out.println("3");
}
});
for (Runnable r : list) {
r.run();
}
或者,您可以定义自己的Printer类:
public class Printer {
private final String toPrint;
public Printer(String toPrint) {
this.toPrint = toPrint;
}
public void print() {
System.out.println(toPrint);
}
}
List<Printer> list = new ArrayList<>();
list.add(new Printer("1"));
list.add(new Printer("2"));
list.add(new Printer("3"));
for (Printer p : list) {
p.print();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句