如何修改java String

来源:互联网 发布:网络用语酱紫什么意思 编辑:程序博客网 时间:2024/05/08 06:33

众所周知,String 类是不可变对象,那么是否有方法改变它呢?

String的成员变量都是private final的,即为初始化之后不可改变,但是其中value比较特殊,因为它是一个引用变量,value是final修饰的,也就是说final不能再指向其他数组对象,既然改变value指针的指向不可能,那么能否改变value指向的数组元素吗?比如改变数组中的s,使其变成n,由于String中的所有成员变量都是private的,因此不能通过通常的方法进行访问。但是反射机制可以访问到private成员变量,这就使得更改value数组变为可能

    public static void Reflection() throw Exception {        String n= "helloworld";        System.out.println("n = " + n)        Field valueField = String.class.getDeclaredField("value")        // 改变value属性的访问权限        valueField.setAccessble(true)        //获取s对象的value属性的值        char[] value = (char[])valueField.get(s)        //改变索引所对应字符        value[1] = 's'    }
0 0