半夜思考, Java 重载的实现

本文探讨了Java中重载机制的实现原理,通过分析String类构造函数源码,揭示了如何通过this调用不同构造函数实现重载。同时,讨论了为何Java8未引入参数默认值特性,以及该特性可能对重载机制的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      因为最近在学 scala,看到了参数的默认值这个特性,但是Java好像没有这个特性, Java8 也没有, 所以特意去查了一下,就牵扯到了 C++了,【只怪 C++没怎么学,,】。

      下面将一下为什么 Java的重载机制的实现,以及为什么 Java8没有出来参数默认值这特性【我猜的】

      刚开始还在想, 重载是怎么实现的, 看了 String 的源码之后, 原来自己也写过, 就是使用 this调用其他的函数, 写的多个构造函数不也是这么写的吗, 我只想嘲笑我自己了,

    @Deprecated
    public String(byte ascii[], int hibyte) {
        this(ascii, hibyte, 0, ascii.length);
    }

   //省略很多行

    @Deprecated
    public String(byte ascii[], int hibyte, int offset, int count) {
        checkBounds(ascii, offset, count);
        char value[] = new char[count];

        if (hibyte == 0) {
            for (int i = count; i-- > 0;) {
                value[i] = (char)(ascii[i + offset] & 0xff);
            }
        } else {
            hibyte <<= 8;
            for (int i = count; i-- > 0;) {
                value[i] = (char)(hibyte | (ascii[i + offset] & 0xff));
            }
        }
        this.value = value;
    }

String 类的这个构造函数我还没用过, 反正重载就是这样使用 this实现的.

为什么 Java8 没有参数默认值这个特性, 假想一下, 如果有了参数默认值这个特性, 我们怎么实现重载 .

 

不要怀疑, 这篇博客的确是来闹眼子的 .

转载于:https://www.cnblogs.com/daimajun/p/7245365.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值