性能问答>这个反射的结果有点怪啊,大佬们谁能帮我看看>
3回复
4年前

这个反射的结果有点怪啊,大佬们谁能帮我看看



最近写业务代码发现一个问题,反射的结果有点奇怪。我模拟业务写了一个测试代码,把问题复现了,大佬们帮我看看呗。

public class Test{
	private final String str = "ss";
	private final String str2;

	Test(){
	    str2 = "ss";
	}

	public static void main(String[] args) throws Exception {
		Test test = new Test();
		Field str = Test.class.getDeclaredField("str");
    		str.setAccessible(true);
    		str.set(test, "xxx");
    		System.out.println(test.str);
    
    
    
    		Field str2 = Test.class.getDeclaredField("str2");
    		str2.setAccessible(true);
    		str2.set(test, "xxx2");
    		System.out.println(test.str2);

	}
}

这个程序执行下来的话,我们想得到的输出应该是
xxx
xxx2
但是我们得到的输出却是
ss
xxx2
我用的是jdk8,这个输出为什么这样?而且如果str1修改失败了,那么为什么str2修改成功了?

3571 阅读
请先登录,查看3条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步