是否有可能在Java中推迟函数调用绑定到运行时?

时间:2012-10-11 05:20:03

标签: java runtime function-calls

考虑一个简单的案例,我要求用户在10种不同的水果中选择一种水果。说水果,苹果,橘子,芒果......等等。如果用户选择苹果,我叫apple(),如果他选择芒果,我叫芒果()等等......

要选择要调用的函数,我不想使用switch或if-else语句。如何选择在运行时调用哪个函数?

注意:我使用的编程语言是Java

3 个答案:

答案 0 :(得分:0)

使用Reflection。 例如: 写一个类中的所有函数;说com.sample.FruitStall 然后使用下面的代码。

String className = "com.sample.FruitStall";
String methodName = "apple"; //here you will choose desired method
Object result;
Class<?> _class;
        try {
            _class = Class.forName(className);
        } catch (Exception e) {
            e.printStackTrace();
        }
            Object[] args = new Object[1];  // To Supply arguments to function
            result = _class.invokeMethod(methodName, args);

答案 1 :(得分:0)

使用java Refection api在运行时调用函数。

        Class noparams[] = {};
        Class cls = Class.forName("com.test.Fruit");
        Object obj = cls.newInstance();

        //call the printIt method
        Method method = cls.getDeclaredMethod("apples", noparams);
        method.invoke(obj, null);

答案 2 :(得分:0)

使用设计模式“Command”。 http://www.codeproject.com/Articles/186192/Command-Design-Pattern

隐藏需要执行的操作的详细信息。