如何解析JVM编译器中的类/字段?

时间:2010-10-14 19:38:53

标签: java compiler-construction jvm

我正在制作JVM语言。该语言具有模块(名称空间)和导入Java库的能力。在导入部分,用户可以导入“java.io. ”或“java.concurrent。”等内容。 我怎么知道源代码中的“文件”引用是在java.io包中而不是在其他地方?

2 个答案:

答案 0 :(得分:1)

因为Java是静态类型的,所以查找必须是明确的。导入整个包(或命名空间)时,如果在源中使用了类型,则编译器将需要处理这些命名空间中的名称冲突。因此,您需要扫描要检查的可用类型列表。

这就是为什么有时会看到扩展了完整类名的源代码。例如java.util.Date在导入时同时包含java.util和java.sql否则编译器不知道使用哪一个。

Scala有一些关于从Java包导入的有趣功能。你可以看看那些灵感。

答案 1 :(得分:0)

如果您想知道包中的哪些类,则需要在类路径中列出该包的目录中的所有类文件。