Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编译器设计:存储函数签名的最佳方法?_Java_Compiler Construction - Fatal编程技术网

Java 编译器设计:存储函数签名的最佳方法?

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

我计划存储所有允许重载的函数签名。 现在,我有一个嵌套HashMap,看起来像这样:

HashMap


其中,第一个键
String
,包含函数名。第二个键,
ArrayList
,包含参数数据类型。现在,我知道使用ArrayList作为密钥是一种糟糕的做法,所以我想知道是否有更好的解决方案来存储函数签名?

设计很好。我最终保留了这个设计。

我会将ArrayList封装在自己的类中,但除了使用ASM类或其他类之外,它看起来还不错。令人担忧的是,人们并没有将内部类用作映射,而是仅用于迭代,用于与子类型进行比较。所以可能是一个有序的映射:TreeMap/LinkedHashMap。将ArrayList作为键有什么问题?哈希代码没有缓存?首先确保它是如此并影响性能,然后用缓存的hashcode封装在一个类中。