Java 是否可以将函数调用顺序存储在列表中?

Java 是否可以将函数调用顺序存储在列表中?,java,Java,我有一个类,它通过连续调用函数来构建字符串 private String mString; addFoo(); addBar(); addBaz(); 但是,在RTL环境中,我需要反向构建字符串,即函数调用顺序应为: addBaz(); addBar(); addFoo(); 是否可以将此调用顺序存储在列表中,以便在RTL环境中反向遍历它?我试图避免重复流程,因为我知道它会完全颠倒过来。有比我想的更好的解决方案吗?您可以定义一个enum public enum FunctionCalls{

我有一个类,它通过连续调用函数来构建字符串

private String mString;
addFoo();
addBar();
addBaz();
但是,在RTL环境中,我需要反向构建字符串,即函数调用顺序应为:

addBaz();
addBar();
addFoo();

是否可以将此调用顺序存储在列表中,以便在RTL环境中反向遍历它?我试图避免重复流程,因为我知道它会完全颠倒过来。有比我想的更好的解决方案吗?

您可以定义一个
enum

 public enum FunctionCalls{
       ADDFOO,ADDBAR,ADDBAZ;
 }
然后定义一个
列表
,然后向前或向后遍历该列表并
切换
,其大小写为函数调用

 switch(functionCall){
       case ADDFOO: addFoo();
       case ADDBAR: addBar();
       case ADDBAZ: addBaz();
 }

您可以定义
枚举

 public enum FunctionCalls{
       ADDFOO,ADDBAR,ADDBAZ;
 }
然后定义一个
列表
,然后向前或向后遍历该列表并
切换
,其大小写为函数调用

 switch(functionCall){
       case ADDFOO: addFoo();
       case ADDBAR: addBar();
       case ADDBAZ: addBaz();
 }

您可以定义一个接口,例如

public interface Action {
     public void performAction();
}
并存储一个
列表
。然后,以相反的顺序迭代列表。您还可以使用
Deque
:首先按下操作,然后弹出它们,直到Deque为空。如果在反向执行操作后不需要跟踪操作,请选择该解决方案。否则,请使用
LinkedList
以获得更好的性能

如果您使用Java8并且只有几个不同的操作,那么可以使用lambda表达式定义它们。例如:

 Action a = () -> System.out.println("Hello world");
如果使用Java 7或更低版本,请使用匿名类:

 Action a = new Action() {
      @Override
      public void performAction() {
           System.out.println("Hello world");
      }
 }

您可以定义一个接口,例如

public interface Action {
     public void performAction();
}
并存储一个
列表
。然后,以相反的顺序迭代列表。您还可以使用
Deque
:首先按下操作,然后弹出它们,直到Deque为空。如果在反向执行操作后不需要跟踪操作,请选择该解决方案。否则,请使用
LinkedList
以获得更好的性能

如果您使用Java8并且只有几个不同的操作,那么可以使用lambda表达式定义它们。例如:

 Action a = () -> System.out.println("Hello world");
如果使用Java 7或更低版本,请使用匿名类:

 Action a = new Action() {
      @Override
      public void performAction() {
           System.out.println("Hello world");
      }
 }

请注意,简单的单词反转将不起作用,因为有不同类型的格式和跨度应用于字符串。请注意,简单的单词反转将不起作用,因为有不同类型的格式和跨度应用于字符串。不太可重用和进化。如果他有一百个不同的动作要执行呢?然后将它们作为数字索引?Idk你可以在没有反射(对于用户应用来说不是很安全)或定义类似的东西的情况下完成这项工作。实际上,界面在这里要好得多,不是很容易重用和进化。如果他有一百个不同的动作要执行呢?然后将它们作为数字索引?Idk你可以在没有反射(对于用户应用来说不是很安全)或定义类似的东西的情况下完成这项工作。这里的界面实际上要好得多