当我们只有.class文件时如何转换对象?

neo*_*sis 3 java reflection casting

假设我有一个名为ObjectFoo.class的类文件,但我无法访问ObjectFoo.java源文件,因为类文件是在运行时创建的.在这种情况下有没有办法投射物体?

目前,我正在使用此代码来转换对象,但在此示例中,我需要在类路径中包含ObjectFoo.java:

Class c = Class.forName("ObjectFoo");
ObjectFoo object = (ObjectFoo) c.newInstance();
Run Code Online (Sandbox Code Playgroud)

目标是使用Java反射从其类文件中实例化对象. 我正在寻找仅使用Java API而不使用其他第三方库的解决方案.

在此先感谢您的回答!

乔纳森.

Dan*_* D. 6

当您使用第三方库,包作为.jar文件时,您将始终编译并运行.class文件..jar存档包含.class文件,而不是.java文件.

因此,如果ObjectFoo类不属于包,则上面的代码是正确的.否则,您将必须将完整的包像路径一样放到类中.