将字符串链接到函数

Jam*_*mmo 1 java android enumeration hashmap runnable

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());
Run Code Online (Sandbox Code Playgroud)

然后

String myString = getCalculatedString();
for (String s : hashDBTableUpdateRef) {
    hashDBTableUpdateRed.get(s).run();
}
Run Code Online (Sandbox Code Playgroud)

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

例如:

function housemethod() {
    myHouseObject.runSomething();
}
function shedmethod() {
    myShedObject.runSomething();
}
function barnmethod() {
    myBarnObject.runSomething();
}
Run Code Online (Sandbox Code Playgroud)

谢谢,

use*_*383 5

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

interface Command {
        void execute();
    }

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

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

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