java吧 关注:1,300,155贴子:12,842,550
  • 12回复贴,共1

求大佬帮忙看一下,我这里为什么不能用反射改变string值啊

只看楼主收藏回复


上面是demo代码
下面是报错内容

求大佬搭救一下


IP属地:浙江1楼2018-10-04 18:04回复
    求大佬解惑


    IP属地:浙江2楼2018-10-04 18:06
    回复
      2026-03-24 16:49:30
      广告
      不感兴趣
      开通SVIP免广告
      有大佬在吗?


      IP属地:浙江来自Android客户端3楼2018-10-04 18:12
      回复
        搜索公众号java初学者,里边最后一篇文章就是这个
        欢迎加入java交流群,群聊号码:339634085


        IP属地:河南来自Android客户端4楼2018-10-04 19:00
        回复
          String s = new String("12");public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {// TODO Auto-generated method stubTest ts = new Test();Field f = ts.getClass().getDeclaredField("s");//f.setAccessible(true);f.set(ts, new String("43"));System.out.println(ts.s);


          IP属地:江西来自iPhone客户端5楼2018-10-04 19:36
          回复(1)
            字符串是常量,当然不能改变了


            来自iPhone客户端6楼2018-10-04 20:51
            回复
              final


              IP属地:湖南来自Android客户端7楼2018-10-04 23:51
              回复
                string是final的


                IP属地:黑龙江来自Android客户端10楼2021-03-04 08:02
                回复
                  2026-03-24 16:43:30
                  广告
                  不感兴趣
                  开通SVIP免广告
                  你要这样能改,那jdk Sring表示你自己干吧。


                  IP属地:四川11楼2021-03-04 08:47
                  收起回复
                    图片上传不了。
                    看报错就可以知道了 value是 char[] 你传了个String 所以报错了。
                    public class Test2 {
                    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
                    String s = "hello world";
                    Field value = String.class.getDeclaredField("value");
                    value.setAccessible(true);
                    value.set(s, "change".toCharArray());
                    System.out.println(s); // print change
                    }
                    }


                    IP属地:浙江12楼2021-03-04 09:19
                    回复