从类实例和字符串构建方法调用?

时间:2014-05-23 10:49:29

标签: java

在Java中,可以在给定类实例和方法调用保存为字符串的情况下执行方法调用吗?

我想让一系列不同的方法调用随机,所以我将把方法部分放在一个列表中作为字符串并随机播放它们。然后我如何使用此字符串作为方法调用的一部分?例如下面的myClass.temp被视为属性。如果我把完整的myClaims。在列表中作为对象,它将尝试在那里执行它们。

List<String> methodList = new ArrayList<String>()
methodList.add("createMethodx(params...)")
methodList.add("createMethody(params...)")
methodList.add("insertMethodz(params...)")

String temp = methodList.get(0)
myClass.temp    //Execute the method.....doesn't work

1 个答案:

答案 0 :(得分:0)

这是一种糟糕的做法。相反,创建一个Runnable或Callable对象列表,随机播放该列表,然后调用runnables:

final MyClass myClass = ...;
List<Runnable> actions = new ArrayList<>();
actions.add(new Runnable() {
    public void run() {
        myClass.createMethodx(...);
    }
});
actions.add(new Runnable() {
    public void run() {
        myClass.createMethody(...);
    }
});

Collections.shuffle(actions);

for (Runnable action : actions) {
    action.run();
}

使用Java 8,该代码将成为

MyClass myClass = ...;
List<Runnable> actions = new ArrayList<>();
actions.add(() -> myClass.createMethodx(...));
actions.add(() -> myClass.createMethody(...));

Collections.shuffle(actions);

for (Runnable action : actions) {
    action.run();
}