Java 编译器设计:存储函数签名的最佳方法?
我计划存储所有允许重载的函数签名。 现在,我有一个嵌套HashMap,看起来像这样:Java 编译器设计:存储函数签名的最佳方法?,java,compiler-construction,Java,Compiler Construction,我计划存储所有允许重载的函数签名。 现在,我有一个嵌套HashMap,看起来像这样: HashMap 其中,第一个键String,包含函数名。第二个键,ArrayList,包含参数数据类型。现在,我知道使用ArrayList作为密钥是一种糟糕的做法,所以我想知道是否有更好的解决方案来存储函数签名?设计很好。我最终保留了这个设计。我会将ArrayList封装在自己的类中,但除了使用ASM类或其他类之外,它看起来还不错。令人担忧的是,人们并没有将内部类用作映射,而是仅用于迭代,用于与子类型进行比较。
HashMap
其中,第一个键
String
,包含函数名。第二个键,ArrayList
,包含参数数据类型。现在,我知道使用ArrayList作为密钥是一种糟糕的做法,所以我想知道是否有更好的解决方案来存储函数签名?设计很好。我最终保留了这个设计。我会将ArrayList封装在自己的类中,但除了使用ASM类或其他类之外,它看起来还不错。令人担忧的是,人们并没有将内部类用作映射,而是仅用于迭代,用于与子类型进行比较。所以可能是一个有序的映射:TreeMap/LinkedHashMap。将ArrayList作为键有什么问题?哈希代码没有缓存?首先确保它是如此并影响性能,然后用缓存的hashcode封装在一个类中。