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