我正在寻找一种将额外的元数据存储到数组实例的方法。通过使用字节码注入技术将额外的字符串字段直接注入到类文件二进制文件中,我已经能够为标准对象实现这一点。
但是,为了使该策略起作用,.class 文件必须可供修改;java 中的数组类没有对应的 .class 文件,因此无法在这个庄园中检测。有没有其他可行的方法来做到这一点?
我最好希望在 java 中实现这一点,而不必修改 JVM C++ 文件。除了额外的复杂性之外,这无疑会增加项目,走这条路几乎肯定会破坏平台提供的非常有价值的可移植性。
我正在寻找一种将额外的元数据存储到数组实例的方法。通过使用字节码注入技术将额外的字符串字段直接注入到类文件二进制文件中,我已经能够为标准对象实现这一点。
但是,为了使该策略起作用,.class 文件必须可供修改;java 中的数组类没有对应的 .class 文件,因此无法在这个庄园中检测。有没有其他可行的方法来做到这一点?
我最好希望在 java 中实现这一点,而不必修改 JVM C++ 文件。除了额外的复杂性之外,这无疑会增加项目,走这条路几乎肯定会破坏平台提供的非常有价值的可移植性。
你可以看看WeakHashMap。
要匹配 Map 合同,您必须为您的数组定义一个包装类,该类将覆盖equals
和hashcode
方法。然后定义一个元数据对象来处理您的自定义属性。
原型是:
WeakHashMap<ArrayWrapper,MetaData> map;
map.put(new ArrayWrapper(primitiveArray), new MetaData("string1",...));