繁体   English   中英

如何递归加载 java class 及其参考 class

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM