簡體   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