Is autoboxing possible for the classes I create?

隐身守侯 提交于 2019-11-26 20:42:10
rgettman

In short, no. There's no way to get that to compile.

Java only defines a limited set of pre-defined boxing conversions.

From the JLS, section 5.1.7:

Boxing conversion converts expressions of primitive type to corresponding expressions of reference type. Specifically, the following nine conversions are called the boxing conversions:

  • From type boolean to type Boolean

  • From type byte to type Byte

  • From type short to type Short

  • From type char to type Character

  • From type int to type Integer

  • From type long to type Long

  • From type float to type Float

  • From type double to type Double

  • From the null type to the null type

Additionally, one might think of overloading the = operator to perform this conversion, but operator overloading is not supported in Java, unlike in C++, where this would be possible.

So your conversion is not possible in Java.

No, unfortunately. Automatic boxing conversions (as per JLS §5.1.7) are only defined for the standard primitive wrapper classes.

In short : No, it's not possible. For this to work, you need operator overloading, which is not available in Java. See link.

If you use Groovy, you can set the boolean behavior by implementing the asBoolean method: http://groovy-lang.org/semantics.html#_customizing_the_truth_with_asboolean_methods

Example:

class Color {
    String name

    boolean asBoolean(){
        name == 'green' ? true : false
    }
}

assert new Color(name: 'green')
assert !new Color(name: 'red')

I know this is not plain Java but compiles to bytecode and runs on the JVM.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!