由于最近在学 scala,看到了参数的默认值这个特性,可是Java好像没有这个特性, Java8 也没有, 因此特地去查了一下,就牵扯到了 C++了,【只怪 C++没怎么学,,】。函数
下面将一下为何 Java的重载机制的实现,以及为何 Java8没有出来参数默认值这特性【我猜的】this
刚开始还在想, 重载是怎么实现的, 看了 String 的源码以后, 原来本身也写过, 就是使用 this调用其余的函数, 写的多个构造函数不也是这么写的吗, 我只想嘲笑我本身了, spa
@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实现的. scala
为何 Java8 没有参数默认值这个特性, 假想一下, 若是有了参数默认值这个特性, 咱们怎么实现重载 . code
不要怀疑, 这篇博客的确是来闹眼子的 .blog