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

利用反射来改变String对象

2015-08-13 11:31 453 查看
String的成员变量是private final 的,也就是初始化之后不可改变。 然而可以利用反射来改变String对象,下面是实例代码:

public static void testReflection() throws Exception {  

      

    //创建字符串"Hello World", 并赋给引用s  

    String s = "Hello World";   

      

    System.out.println("s = " + s); //Hello World  

      

    //获取String类中的value字段  

    Field valueFieldOfString = String.class.getDeclaredField("value");  

      

    //改变value属性的访问权限  

    valueFieldOfString.setAccessible(true);  

      

    //获取s对象上的value属性的值  

    char[] value = (char[]) valueFieldOfString.get(s);  

      

    //改变value所引用的数组中的第5个字符  

    value[5] = '_';  

      

    System.out.println("s = " + s);  //Hello_World  

}  

打印结果为:
s = Hello World

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