6

我是 Java 新手,所以我的问题可能看起来很简单。但我需要你们的一些指导。

这是我的问题:我有一个包含一堆方法的类,我想将这些方法提供给组合框中的用户进行选择,根据他们的选择,一些代码将运行。现在我可以通过编写开关选择方法来做到这一点。根据选择,我使用 switch 来运行特定方法。

但是我的函数列表很长接近 200,所以我的问题是:有没有更聪明的方法来做这件事。只要给我指出正确的方向,剩下的我会尽力去做。

4

5 回答 5

8

您可以使用反射,特别是: Class.getMethods()Class.getDeclaredMethods()

确保您了解它们之间的差异(请阅读链接的 javadocs),如果您不了解 - 不要害怕问。

于 2012-06-13T13:54:25.167 回答
2

我认为研究 Java 反射将是最好的起点,假设我已经理解了你想要正确地做的事情。

于 2012-06-13T13:54:36.977 回答
2

您可以使用反射来列出方法并调用它们

http://docs.oracle.com/javase/tutorial/reflect/index.html

使用 Java 反射创建 eval() 方法

于 2012-06-13T13:54:59.770 回答
1

您可以使用反射(您可以在 Google 上找到很多信息),但简单地向用户展示您的方法并不是一个好习惯。在更复杂的应用程序中,您应该尝试将用户想要的展示和真实执行分开

于 2012-06-13T13:56:06.943 回答
0

每个选择都可以由一个 Enum 表示,该 Enum 构建为一组函数指针:

public enum FunctionPointer {
F1 {
    public SomeObject doFunction(args) {
        YourClass.doMethod(args);
    }
},
//More enum values here...
}

语法需要一些工作,但在客户端你可以调用

FunctionPointer.F1.doFunction("abc");
于 2012-06-13T15:03:47.823 回答