簡體   English   中英

java 編譯器如何允許 class 擁有自己的類型引用?

[英]How does java compiler allow a class to have its own type reference?

我想知道下面的代碼,

public class Abc {
    private Abc p;
}

編譯 class 時,編譯器如何知道類型ABC ,因為類型ABC還沒有出現。

我研究了 python 並了解了如何構建 python class,

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

在上面的 python 代碼中,名稱Person被分配給對應的 class object,在 ZA2F2ED4F8EBC2CBBD4C21 中的所有變量和方法定義之后。

我想知道如何在引擎蓋下構建 java class 以及它如何包含自己類型的引用類型。

有人可以為我提供一個深入的解釋,或者給我一本很好的參考書,讓我了解那些從幕后發生的事情嗎?

請記住,在 Java 中,class 變量只是一個參考變量。 所以已經“看到”了Abc這個名字,它可以很容易地在第一次通過時解釋它。

它沒有義務這樣做,但您可以想象一個編譯器記錄一個類型為class的符號,名稱為Abc ,並且在首次聲明時內部 state 為“不完整”。 當它到達 class 變量時,它可以立即確定 class 存在或將存在,具體取決於您如何看待它。

這不會使單遍編譯成為可能,但這是因為您可以按任何順序聲明方法,包括無法“單遍”編譯的相互調用的方法。 在其他情況下,您可以在 Java 類中進行“前向”引用,這意味着它們並不總是可以單遍編譯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM