java - 使用反射更改 boolean 字符串值不起作用

标签 java string reflection boolean

我正在试验 Java 反射和内联字符串,得出的结果让我感到困惑。

import java.lang.reflect.Field;

public class HappyDebugging {

    public static void main(String[] args) throws Exception {
        defineTrueFalse();

        System.out.println("true is " + true); // why is it "true is true"?
        System.out.println("false is " + false);
        System.out.println(true);
        System.out.println(false);
        System.out.println("true");
        System.out.println("false");
        System.out.println("true is " + Boolean.valueOf(true));
        System.out.println("false is " + Boolean.valueOf(false));
        System.out.println("true is " + Boolean.valueOf("true"));
        System.out.println("false is " + Boolean.valueOf("false"));
    }

    static void defineTrueFalse() throws Exception{
        Field field = String.class.getDeclaredField("value");
        field.setAccessible(true);
        field.set("true", new char[] {'f', 'a', 'l', 's', 'e'});
        field.set("false", new char[] {'t', 'r', 'u', 'e'});

        field = String.class.getDeclaredField("offset");
        field.setAccessible(true);
        field.setInt("true", 0);
        field.setInt("false", 0);

        field = String.class.getDeclaredField("count");
        field.setAccessible(true);
        field.setInt("true", 5);
        field.setInt("false", 4);
    }
}

为什么输出的前两行是

true is true
false is false

我希望他们是

true is false
false is true

请注意不同平台的输出不同。

最佳答案

这似乎有效....

String.valueOf(BooleanValue)

关于java - 使用反射更改 boolean 字符串值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8728820/

相关文章:

java - 高效使用 GAE DataStore

c# - 绳子神奇地自己切断

R计算连续列中模式匹配的数量

c#反射改变属性的get方法

java - 动态转换类并调用适当的方法

java - 在自己的类中实例化类型

java - 通过 XSLT 解析嵌套标签

java - Veracode 问题 - 通过发送的数据暴露信息 (CWE ID 201)

jquery 转到表单提交上的 url,并将字段值添加到 url 字符串

java - 使用参数化构造函数实例化一组给定的类