62,626
社区成员
发帖
与我相关
我的任务
分享
接受批评,向5楼大神敬礼fd.set(s, "cde".getBytes());
也是可以输出cde的
5楼的同学来解析一下你的代码
public abstract class Sample {
public static void main(String[] args) {
try {
String s = "abc";
Field fd = String.class.getDeclaredField("value"); //用反射获取属性
System.out.println(fd); //可以看到value属性是private final的
fd.setAccessible(true);
fd.set(s, new char[] {'c', 'd', 'e'}); //但是通过反射还是修改了它的值
System.out.println(s); //可以看到,s引用的对象值还是变了
} catch (Exception e) {
e.printStackTrace();
}
}
}