java - 如何让 Class.forName 忽略小写/大写

标签 java class netbeans dynamic

例如,当我有一个名为的类时;

'猴子生意'

我知道我可以使用 Class.forName("MonkeyBusiness"); 调用它

但是当我使用 Class.forName("monkeyBusiness"); 调用它时或 Class.forName("monkeybusiness"); 它给了我异常(exception);

线程“main”中的异常 java.lang.NoClassDefFoundError: monkeyBusiness
(错误名称:ntx/gmd/services/usage/MonkeyBusiness)

是否可以使用任何大小写格式的字符串来调用它?如果是,怎么办?

最佳答案

你不知道。

Monkey monkey 和 MONKEY 在 Java 中是三个完全不同的东西。

为什么需要这样的功能?根本问题可能是您不知道哪些类与您的应用程序相关。

您可以做两件事。首先,有一个内部约定,您只能使用小写或 CamelCase 类名。这样,只需将您的搜索转换为适当的格式:Class.forName(className.toLowerCase())

其次,您可以对所有使用过的类进行缓存,并从缓存中查找合适的名称。只需创建一个列表,以小写名称为键,以真实姓名为值。

第三,但不推荐,暴力检查所有组合。但这会为更长的名称创建一个非常糟糕的缩放函数:2^n,对于 n 长度的名称。

关于java - 如何让 Class.forName 忽略小写/大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1465993/

相关文章:

java - 如何在 JTable 之后添加 JButton

Java Swing : How to remove an anonymous ActionListener from a component

c++ 带参数的新类数组

C++从多个具有相同虚函数名的基类继承

java - 如何在 netbeans 的 hibernate 配置中删除数据库连接?

java - 如何从类路径中的不同 jar 加载同名资源之一?

java - Intellij IDEA 找不到包类型

java - 无法在 Netbeans 中将项目从 Tomcat 运行到 Glassfish 服务器

python-3.x - 使用Python实现卡恩拓扑排序算法

java - JTextPane 不可变文本 block