面试题使用反射以强制修改String的值
发布时间
阅读量:
阅读量
众所周知,String 类型具有不可更改的特性
对于 String 的任何处理操作,系统都会创建一个新的 String 实例,并将其作为结果返回
那么是否存在一种方式,能够直接修改 String 中存储的值呢?
答案是肯定的,这需要借助反射机制来实现:
public class Demo1 {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
String str = "abc";
Class<String> clazz = String.class;
// private final char value[];
// 这里因为 value 数组是 private 类型的,必须要用 getDeclaredField 获取
Field value = clazz.getDeclaredField("value");
// 设置访问权限,让外部也可以访问 private 属性
value.setAccessible(true);
// 修改
value.se
全部评论 (0)
还没有任何评论哟~
