如何使用Java Text Field作为类名的输入?

时间:2014-06-03 08:54:08

标签: java class jtextfield

我正在为学校编写一个Java程序(所以:严格的规则......)以图形方式显示数学函数(如Sin,Cosine和Tangent,以举例)。

我有两个接口:FunctionDifferentiableFunction,每个数学函数都存储在扩展FunctionDifferentiableFunction的类中。

当我启动程序时,我有一个文本字段,我需要在其中写下数学函数的名称(它们将由教授添加作为测试),我的想法是能够通过以下方式引用类名:文本字段输入。

问题是:经过几天的搜索,我真的不知道该怎么做,或者即使有可能。

请帮助我,我被困住了,截止日期临近!

1 个答案:

答案 0 :(得分:3)

是的(合理地)是可能的。虽然我更愿意使用JComboBox,但如果你不能...... {/ p>

有问题。您的命名风格可能与输入的内容不匹配,因此您需要考虑到这一事实......

基本上,您需要的是JTextField中的文本以及充当函数包名称的前缀。

然后,您可以使用Class.forName查找该类,并使用Class#newInstance创建该类的新实例。

从那里你需要确定该类支持哪个接口,例如......

try {
    Class<?> clazz = Class.forName(packagePrefix + "." + functionName);
    Object instance = clazz.newInstance();
    if (instance instanceof DifferentiableFunction) {
        //...
    } else if (instance instanceof Function) {
        //...
    }
} catch (ClassNotFoundException ex) {
    ex.printStackTrace();
} catch (InstantiationException ex) {
    ex.printStackTrace();
} catch (IllegalAccessException ex) {
    ex.printStackTrace();
}

现在,正如我所说,这非常容易出错,所以你需要小心

另一种方法可能是将每个类的实例加载到某种Map中,并使用它来查找所需的函数。