通过反射,重新给String中的value属性赋值,从而达到改变String的值的效果。
public class Main{
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
String str = "abc";
System.out.println(str); // abc
fanshe(str);
System.out.println(str); // abcd
}
private static void fanshe(String str) throws NoSuchFieldException, IllegalAccessException {
Class<? extends String> strClass = str.getClass();
Field value = strClass.getDeclaredField("value");
value.setAccessible(true); // 既可以破坏,private的私有性
value.set(str, new char[]{'a', 'b', 'c', 'd'}); // 也可以破坏final的不可修改性
}
}
版权声明:本文为jt781861965原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。