![](/img/trans.png)
[英]Java: How to load a class (and its inner classes) that is already on the class path?
[英]How to load java class and its reference class recursively
图像 class 图如下:
class A {
B b;
}
class B {
C c;
}
class C {
}
I wanna load class A、B and C at startup before calling to A、B or C, but when I try class.forName("A")
the JVM only loads class A, how can I load all classes from A to C recursively ?
如果要在 Class A 和 Class Z0D61F8370CAD1D412F80B84D143E1257 中加载 class B
class A {
B b;
public A() { b = new B()}
}
class B {
C c;
public B() {c = new C()}
}
class C {
}
然后,当您新建 A 时,它将创建实例 class B,C 并访问它喜欢
A a = new A();
a.b.c;
您可以调用Class.forName(“B”)
和Class.forName(“C”)
来加载它们。
但是,JVM 明确延迟加载类,直到需要它们,因此您将无法直接执行此操作。
如果你真的想实现这种行为(并且有从 A 到 B 的类型引用),那么你可以使用反射来列出 A 的所有声明方法和 A 的声明字段。如果其中任何一个包括 B,那么这个列表将导致要引入的课程。
但是,如果 A 和 B 之间没有关系,那么您必须执行Class.forName(“B”)
来完成这项工作。
最后,尚不清楚您为什么要这样做。 您能否扩展您的问题以包括“为什么”而不仅仅是“如何”,因为可能有更好的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.