java学习笔记之直接修改String
参考其他博客的,使用java.lang.reflect.Field可以修改类private成员变量的值,即可以通过修改String变量里成员value,实现直接修改String。
import java.lang.reflect.Field;
public class test
{
public static void main(String []args)
throws NoSuchFieldException,
SecurityException,
IllegalArgumentException,
IllegalAccessException
{
String str ="Hello World!";
Field field;
field = String.class.getDeclaredField("value");
field.setAccessible(true);
byte[] value;
value = (byte[])field.get(str);
value[0]='a';
value[1]='b';
return; //断点看str,值为abllo World!
}
}
所以新手说:将String的value变量设置为private的意义何在呢,使得修改变得麻烦。