繁体   English   中英

Java反射更新号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM