我正在为学校编写一个 Java 程序(因此:对其有严格的规则...)以图形方式可视化数学函数(例如,正弦、余弦和正切)。
我有两个接口(interface):Function
和DifferentiableFunction
,并且每个数学函数都存储在扩展 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/