如何从Java中的类名获取类对象

alk*_*kar 40 java reflection class

我知道类名,说"MyClass"并想要检索Class对象,即.MyClass.class以供将来参考.有没有办法做到这一点?

我已经浏览了网页,但我发现的大部分内容与我有关ClassLoader,我认为这不适合我的情况.我不想初始化一个类,但只获取一个类对象以供将来使用.

编辑:关于这个的第一个答案:

我已经检查了forName()方法,但我认为这也应该初始化类.现在我可以用完整的参数调用它并传递false给第二个参数,但第三个参数必须是null什么?

Class.forName("MyClass", false, null);
Run Code Online (Sandbox Code Playgroud)

回来MyClass.class

事实上,我想要做的是替换与Class对象关联的String ID 数组,以及从中自动获取类对象的ID数组,以摆脱一些手动工作:)

感谢您的快速回答,对不起之前没有提到这一点.

Ton*_*ony 58

您可以使用:

Class c = Class.forName("com.package.MyClass");
Run Code Online (Sandbox Code Playgroud)

然后实例化一个对象:

Object obj = c.newInstance();
Run Code Online (Sandbox Code Playgroud)

编辑:这只是最简单的用例.如注释中所示,您将需要考虑初始化过程抛出的构造函数参数和异常.该对JavaDoc中newInstance有所有的细节.

  • 为此,该类必须具有可访问的no-args构造函数. (2认同)

Joa*_*uer 7

Class.forName("MyClass")
Run Code Online (Sandbox Code Playgroud)

阅读JavaDoc以获取详细信息