java - 如何使对象像 boolean 值一样使用 booleanValue() ?

标签 java compiler-construction casting boolean wrapper

在 Java 中, boolean 包装类包含一个名为 booleanValue() 的方法。返回 boolean 对象值的 boolean 原始类型。

令我感兴趣的是,Java 编译器可以识别这个 booleanValue() 方法,并在需要 boolean 值时在使用 boolean 值时自动添加它;例如,如果您编写类似 if (something) 的 if 语句哪里something是一个 boolean 对象,然后编译代码并反编译结果,你会看到代码现在为 if (something.booleanValue()) 。这几乎就像编译器认识到 Boolean Object 类具有 booleanValue() 方法的事实,并自动以与添加 toString() 相同的方式放置它。到字符串加法表达式中添加的任何对象的末尾。

所以,我的问题是如何在自定义对象类中使用它?有没有办法使用booleanValue()创建一个对象类?或intValue()编译器以与 Boolean 和 Integer 等包装类相同的方式识别的方法?

我发现Boolean Object类只实现了两个接口(interface):Comparable<Boolean>Serializable 。因为这些都不包含 booleanValue()方法,我不明白Java编译器如何识别booleanValue() Boolean Object 类中的方法并按其方式使用它。我尝试简单地制作一个 booleanValue()方法在我的自定义对象类中,并尝试像 boolean 值一样使用该对象,但无济于事。

有什么想法吗?

最佳答案

您问题中的关键句子是

that is recognized by the compiler

除非你编写自己的编译器,否则你无法让编译器做任何事情。 booleanValue() 之所以有效,是因为 Java Language Specification requires it.

If r is a reference of type Boolean, then unboxing conversion converts r into r.booleanValue()

The method booleanValue is declared in java.lang.Boolean .

关于java - 如何使对象像 boolean 值一样使用 booleanValue() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23100195/

相关文章:

java - 资源 'attr/borderColor' 与配置 '' 的错误重复值。使用 me.dm7.barcodescanner :zxing:1. 9.13 时?

运行时语言更改的解析技术

java - 如何在CMD中设置编译和运行Java

C#:反射实例化对象会引发转换错误?

java - RequestMapping 无法正常工作

java - Jenkins 插件连接被拒绝

maven-2 - 找出 Maven 使用的编译器

c# - C#中如何取回子字符串的值

c++ - 传递给函数的临时对象是否被视为 const?

java - Java 中的最终 int