当前位置: 首页 > 面试题库 >

我创建的课程可以自动装箱吗?

扈运浩
2023-03-14
问题内容

有什么方法可以对我创建的类使用自动装箱吗?例如,我有的子类Number

public class UnsignedInteger extends Number {
    int n;

    public UnsignedInteger(int n) {
        if(n >= 0)
            this.n = n;
        else
            throw new IllegalArgumentException("Only positive integers are supported");
    }
}

现在,UnsignedInteger i = new UnsignedInteger(88);工作完全正常,但有什么办法,使这个编译:UnsignedInteger i = 88;?不会适合我的
提前致谢!


问题答案:

简而言之,没有。没有办法将其编译。

Java仅定义了一组有限的预定义拳击转换。

在JLS中,第5.1.7节:

装箱转换将原始类型的表达式转换为引用类型的对应表达式。具体来说,以下九种转换称为装箱转换:

  • 从布尔类型到布尔类型

  • 从字节类型到字节类型

  • 从短类型到短类型

  • 从char类型到Character类型

  • 从int型到Integer型

  • 从长型到长型

  • 从float类型到Float类型

  • 从Double类型转换为Double类型

  • 从空类型到空类型

另外,可能会想到重载=运算符以执行此转换,但是Java中不支持运算符重载,这与C ++不同,在这种情况下这是可能的。

因此,在Java中无法进行转换。



 类似资料:
  • 有什么方法可以为我创建的类使用自动装箱吗?例如,我有的子类。 现在,< code > UnsignedInteger I = new UnsignedInteger(88);工作得非常好,但是有什么方法可以让这个编译:< code > UnsignedInteger i = 88?对我来说不会。提前感谢!

  • 问题内容: 有时,我创建一个装饰器类,如下所示: IntelliJ可以自动为我创建此类吗? 问题答案: 更新// 我注意到IntelliJ具有用于生成委托方法的“生成”选项。创建一个新类: 然后标记myInterface,转到“菜单”>“代码”>“委托方法”,选择要包装的所有方法,仅此而已。 //更新结束 您可以尝试“重构”->“用委派替换继承”重构。这样就应该能够做到。我称之为“使用Alt +

  • 在中国大学 MOOC 平台已开设线上课程(MOOC、SPOC、在线开放课程)的课程团队老师,可基于自己的线上课程创建并使用关联慕课堂(助教无法使用慕课堂),通过电脑端【课程管理后台】,进入自己当前学期的mooc或spoc课程: 点击课程左侧导航的【慕课堂管理】进入慕课堂管理界面: 点击【+创建课堂】,输入课堂名称、上课时间等,点击【保存】,课堂创建成功,并且系统会分配六位字符的课堂码,学生可以在A

  • 问题内容: 为什么第二段代码更快? 问题答案: 自动装箱使用,内部将Integer对象缓存为小整数(默认情况下为-128至127,但是最大值可以使用“ java.lang.Integer.IntegerCache.high”属性进行配置-请参见Integer.valueOf的源代码) ,因此与直接调用不同。因为在调用之前可以快速检查整数值的大小,所以直接调用要快一些(尽管如果您有很多小整数,它会使

  • 本文向大家介绍自动装箱和拆箱?相关面试题,主要包含被问及自动装箱和拆箱?时的应答技巧和注意事项,需要的朋友参考一下 自动装箱是Java 编译器在基本数据类型和对应的对象包装类型之间做的一个转化。 比如:把int转化成 Integer,double转化成 Double,等等。反之就是自动拆箱。 原始类型: boolean,char,byte,short,int,long,float,double 

  • 有以下代码: 它打印: 12 这个不能编译。为什么?