【发布时间】:2022-11-28 10:16:58
【问题描述】:
我想从命令行给出的字符串中识别类类型。例如,args[0] = "Integer",
现在我这样做:
Class<?> cls = Class.forName(args[0]);
但我得到“java.lang.ClassNotFoundException:整数”
我读到我必须在 forName() 中使用类的完全限定名称,所以如何从字符串“Integer”或“java.util.ArrayList”中获取字符串“java.lang.Integer” “来自“ArrayList”等?
【问题讨论】:
-
好吧,像
Integer和ArrayList这样的名字本质上是模棱两可的。它怎么知道你指的是java.lang.Integer而不是some.other.coolpackage.Integer? -
所以这不可能?如果我想获得包中某个类的完全限定名称怎么办? (假设你不知道路径名)
-
好吧,我没有那样说。如果你能想到一些规则(这就是我在评论中所问的)将您实际想要查找的类与可能存在的任何其他类区分开来,然后您可以实施这些规则。
-
收到了。谢谢!
-
“如果我想获得包中某个类的完全限定名称怎么办?”我不确定你的意思。如果您知道它“在您的包中”,那么您就知道它在哪个包中,因此您可以计算 FQN,对吗?你有一个
Class对象吗?如果你这样做,就做getName()。
标签: java reflection classnotfoundexception classname