java - 将字符串链接到函数

标签 java android hashmap runnable enumeration

在 Java (Android) 中有没有办法链接一个字符串和一个函数?我的目标是根据从单独方法接收到的字符串运行特定函数。

即如果 myString == "building"然后执行 buildingmethod();

我正在考虑像这样使用 HashMap:

HashMap<String,Runnable> hashDBTableUpdateRef = new HashMap<>();
hashDBTableUpdateRef.put("house",this.housemethod());
hashDBTableUpdateRef.put("shed",this.shedmethod());
hashDBTableUpdateRef.put("barn",this.barnmethod());

然后

String myString = getCalculatedString();
for (String s : hashDBTableUpdateRef) {
    hashDBTableUpdateRed.get(s).run();
}

由于以下操作和自定义枚举,我无法真正创建带有参数的通用方法,例如 function anyBuilding(String buildingType)。有什么想法吗? runnable 是前进的方向吗?

例如:

function housemethod() {
    myHouseObject.runSomething();
}
function shedmethod() {
    myShedObject.runSomething();
}
function barnmethod() {
    myBarnObject.runSomething();
}

谢谢,

最佳答案

例如,您可以定义实现 Command 接口(interface)的枚举

interface Command {
        void execute();
    }

    enum MyEnum implements Command {
        A() {
            public void execute() {
                System.out.println("A");
            }
        },
        B {
            public void execute() {
                System.out.println("B");
            }
        };
    }

现在您需要做的就是将您的字符串转换为枚举 MyEnum.valueOf("someString"); 并返回您可以调用 execute 方法的对象。

但仍然存在主要问题,为什么要这样做以及想要实现什么?因为这可能是更好的方法。

关于java - 将字符串链接到函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32611011/

相关文章:

java - Libgdx - 纹理过滤器的TexturePacker组合

java - 检查字符串是否为数字

java - 两个键是相同的 hashMap 覆盖写“现有的?

java - 如果我有一个使用 mouselistener 的标签数组列表,那么单击标签时如何获取索引?

java - Java 中的多客户端聊天应用程序

android - 如何在 viewpager 的所有 fragment 中获取相同的子 fragment (具有 recyclerview)实例?

Java HashMap 哈希函数

java - HashMap 覆盖值

java - Postgresql LIKE for Integer

java - 声明时初始化和构造函数中初始化的区别