您的位置:首页 > 编程语言 > Java开发

如何修改java String

2016-03-07 19:39 399 查看
众所周知,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'

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java string