半夜思考, Java 重載的實現

      由於最近在學 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

相關文章
相關標籤/搜索