TimeCollectTime 2021-07-29 09:20 采纳率: 50%
浏览 98
已结题

对String的value进行反射set报出一堆warning和IllegalArgumentException异常

public static void main(String[] args) throws Exception{
        String s="abc";
        Class<? extends String> cls = String.class;
        Field value = cls.getDeclaredField("value");
        value.setAccessible(true);
        value.set(s,"abcd".toCharArray());
        System.out.println(s.hashCode());
}


报错:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by Demo (file:/D:/1.%e5%9e%83%e5%9c%be%e7%ab%99/JAVA/%e5%8f%8d%e5%b0%84/out/production/%e5%8f%8d%e5%b0%84/) to field java.lang.String.value
WARNING: Please consider reporting this to the maintainers of Demo
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Exception in thread "main" java.lang.IllegalArgumentException: Can not set final [B field java.lang.String.value to [C
at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
at java.base/jdk.internal.reflect.UnsafeQualifiedObjectFieldAccessorImpl.set(UnsafeQualifiedObjectFieldAccessorImpl.java:83)
at java.base/java.lang.reflect.Field.set(Field.java:780)
at Demo.main(Demo.java:10)

  • 写回答

3条回答 默认 最新

  • CSDN专家-微编程 2021-07-29 09:26
    关注

    img
    你将你的jdk改成1.8版本试试,不要超过1.8

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月1日
  • 已采纳回答 7月29日
  • 创建了问题 7月29日

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line