Java 中自己写的类能否实现自动拆、装箱?

问答 若要好 ⋅ 于 2019-05-26 16:42:46 ⋅ 最后回复由 若要好 2019-05-27 18:31:22 ⋅ 1781 阅读
  • package FaceToObject;

public class Test3 {
public static void main(String[] args) {
Integer i1 = 123;//Integer i1 = i1.valueOf(123);自动装箱
int i2 = i1;//int i2 = i1.intVlaue();自动拆箱

    IntTest it = IntTest.valueOf(123);
    IntTest ii = 123;//能否实现自动装箱?
    int i = it;//能否自动实现自动拆箱?
    System.out.println(it);
}

}

class IntTest {
private final int value;

public IntTest(int value) {
    this.value = value;
}

public static IntTest valueOf(int i){
    return new IntTest(i);
}

public int intValue() {
    return value;
}

@Override
public String toString() {
    return String.valueOf(value);
}

}

成为第一个点赞的人吧 :bowtie:
回复数量: 4
  • 青牛 国内首批大数据从业者,就职于金山,担任大数据团队核心研发工程师
    2019-05-27 09:24:07

    装箱过程是通过调用包装器的valueOf方法(譬如Integer的valueOf(int))实现的,而拆箱过程是通过调用包装器的 xxxValue方法(譬如Integer的intValue())实现的,所以自己实现也没问题 定义同样功能的方法即可 但是要想自动的拆箱和装箱 最好还是要编译器支持

  • 若要好
    2019-05-27 12:37:41

    @青牛 也就是说自动的拆装箱时编译器内部实现的,就像println()会自动调引用类型对象的toString方法一样都是编译器内部实现的吗

  • 青牛 国内首批大数据从业者,就职于金山,担任大数据团队核心研发工程师
    2019-05-27 16:27:33

    @若要好 不是编译器内部实现 是编译器为了提高效率 对简单的数据类型做了优化 自动调用他们的一些方法而已

  • 若要好
    2019-05-27 18:31:22

    @青牛 好的,了解

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter