通过反射,重新给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 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/jt781861965/article/details/125160475