簡體   English   中英

如何在JVM編譯器中解析類/字段?

[英]How do I resolve a class/field in a JVM compiler?

我正在制作JVM語言。 該語言具有模塊(命名空間)和導入Java庫的功能。 在導入部分中,用戶可以導入諸如“ java.io. ”或“ java.concurrent。 ”等之類的東西。我如何知道源文件中的“文件”引用位於包java.io中而不是其他地方?

因為Java是靜態類型的,所以查找必須是明確的。 導入整個包(或名稱空間)時,如果在源中使用了類型,則編譯器將需要處理這些名稱空間中的名稱沖突。 因此,您需要掃描可用類型的列表以進行檢查。

這就是為什么您有時會看到擴展了完整類名的源代碼的原因。 例如,當同時導入java.util和java.sql時為java.util.Date,否則編譯器不知道使用哪個。

Scala具有一些有關從Java包導入的有趣功能。 您可以查看那些靈感。

如果要了解包中包含哪些類,則需要在類路徑中列出該包的目錄中的所有類文件。

暫無
暫無

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

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