java - 如何使用 Java 文本字段作为类名的输入?

标签 java class jtextfield

我正在为学校编写一个 Java 程序(因此:对其有严格的规则...)以图形方式可视化数学函数(例如,正弦、余弦和正切)。

我有两个接口(interface):FunctionDifferentiableFunction ,并且每个数学函数都存储在扩展 Function 的类中或DifferentiableFunction

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

问题是:经过几天的搜索,我真的不知道如何做这件事,或者即使它可能。

请帮助我,我陷入困境,而且截止日期已近!

最佳答案

是的,这是(相当)可能的。虽然我更喜欢使用 JComboBox,但如果你不能,你就不能...

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

基本上,您需要的是来自 JTextField 的文本和充当函数包名称的前缀。

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

从那里您需要确定该类支持哪个接口(interface),例如......

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中,并使用它来查找您需要的函数。

关于java - 如何使用 Java 文本字段作为类名的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24010920/

相关文章:

Java的TextField无法解析,看不到

java - 在很多 jTextField 中选择所有焦点

Java - Eclipse JTextField 太大

java - 从 SipFactory 创建 SipStack

java - Hashmap单键持有一个类。计算 key 并检索计数器

java - 具有类键的弱 HashMap

c++ - 缺少类模板 "Complex"的参数列表

java - 在Java中获取传入输入流的IP

java - 由于 header 不正确,Sh 脚本未执行

java - onReceive 永远不会被调用