[英]Java reflection update number
我是Java反射的新手。 我正在尝试制作一个程序,其中两个数字相加会得出自定义结果。 下面是代码:
public class MoreTest {
public static void main(String[] args) {
try {
Field field = Integer.class.getDeclaredField( "value" );
field.setAccessible( true );
field.setInt(Integer.valueOf(2),2);
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
System.out.println( 2 + 4 ); // should print 8
}
}
在上面的代码中我可以做什么以打印所需的输出?
好吧,您只需将2重写为... 2,而不是4 ...
尝试替换这个:
field.setInt(Integer.valueOf(2), 2);
这样
field.setInt(Integer.valueOf(2), 4);
在你的代码中
然后 :
Integer a = 2;
System.out.println( a + 4 ); // will print 8
这是有效的,因为Integer a = 2;
触发自动装箱,编译器将其替换为Integer a = Integer.valueOf(2);
,这是您之前将值设置为4的缓存中的实例。
在表达式中, a + 4
自动拆箱; 编译器将其替换为a.intValue() + 4
。
在表达式2 + 4
(使用数字int
文字)中,值都是基元,并且不使用Integer
类实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.