我目前正在从事一个与字节码分析相关的项目。我遇到了以下代码:
char[] buff = new char[1];
//some code tainting the buff
return (new String(buff));
在字节码中,我找到了new String(buff)
的相关映射,如下:
Ljava/lang/StringValue.cache
你们中的任何一个人能解释一下这个cache
字段是从哪里出现的吗?
它来自于jdk i.6的StringValue。根据描述,“此类仅由操作字符串用于存储值的字符数组的静态方法组成。”
有人能解释一下吗?它的目的是什么?我认为主要是因为他们使用了字符缓冲区作为传递给字符串的参数。该类不修改缓冲区的内容,相反,我认为它只是一个网关,用于说明缓冲区的内容仅用于初始化字符串。