我正在制作JVM语言。该语言具有模块(名称空间)和导入Java库的能力。在导入部分,用户可以导入“java.io. ”或“java.concurrent。”等内容。 我怎么知道源代码中的“文件”引用是在java.io包中而不是在其他地方?
答案 0 :(得分:1)
因为Java是静态类型的,所以查找必须是明确的。导入整个包(或命名空间)时,如果在源中使用了类型,则编译器将需要处理这些命名空间中的名称冲突。因此,您需要扫描要检查的可用类型列表。
这就是为什么有时会看到扩展了完整类名的源代码。例如java.util.Date在导入时同时包含java.util和java.sql否则编译器不知道使用哪一个。
Scala有一些关于从Java包导入的有趣功能。你可以看看那些灵感。
答案 1 :(得分:0)
如果您想知道包中的哪些类,则需要在类路径中列出该包的目录中的所有类文件。