如何使Class.forName忽略小写/大写

Thy*_*hys 1 java netbeans class dynamic

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

'MonkeyBusiness'

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

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

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

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

Ger*_*rit 9

你没有.

猴子和猴子是Java中三种不同的东西.

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

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

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

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