在 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 typeBoolean
, then unboxing conversion convertsr
intor.booleanValue()
关于java - 如何使对象像 boolean 值一样使用 booleanValue() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23100195/