我想知道是否可以在Thread's run中调用定义函数。可以通过使用if语句来完成,但是有更好的方法吗?

一个可能的解决方案

public class WorkerThread extends Thread {
    private String functionToCall = null;

    public WorkerThread(String functionToCall) {
        this.functionToCall = functionToCall;
    }

    public void run() {
        if (functionToCall.equals("func1"))
            func1();
        else if (functionToCall.equals("func2"))
            func2();
    }

    private void func1() {
    }

    private void func2() {
    }

}

最佳答案

Java反射提供了一种通过名称调用方法的方法。该教程可在此处找到:http://docs.oracle.com/javase/tutorial/reflect/

09-11 17:42