Advertisement

面试题使用反射以强制修改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)

还没有任何评论哟~