2014-09-22 43 views
0

這是我的構造函數:我的構造不會建造或「迴歸」又該返回

public class OrderedIntList extends ArrayList{ 


    public OrderedIntList(int ... elements) { 
     ArrayList <Integer> temp = new ArrayList<Integer>(); 


     for(int i=0; i<elements.length; i++) { 
      temp.add(elements[i]); 
     } 
    } 

} 

這是我的計劃:

public static void main(String[] args) { 
    int[] a = {1,2,4,5,3}; 
    OrderedIntList la = new OrderedIntList(a); 
    System.out.println(la); 
} 

當我運行它的輸出爲:[ ] 。所以從技術上來說,構造函數dint會將構造返回給對象?我該如何解決?

+1

請格式化您的代碼,不要發佈大寫。 – 2014-09-22 17:09:29

+1

爲什麼它只會返回「[]」。你正在做的是將元素添加到本地ArrayList – geoand 2014-09-22 17:10:48

回答

0

添加到您的列表在構造函數你初始化的局部ArrayList持有在構造函數中傳遞的元素,但toString不知道這個本地列表,並且打印由您擴展的類的繼承結構持有的元素 - ArrayList。因此,考慮改變你的構造函數

public OrderedIntList(int... elements) { 
    for (int i = 0; i < elements.length; i++) { 
     this.add(elements[i]);// your class extends ArrayList 
           // so it inherited structure to store elements 
           // and toString is base on this structure 
           // not on local list declared in constructor 
    } 
} 
+0

我明白了!謝謝你了! :) – 2014-09-22 17:30:08

+0

@djrobles歡迎您:) – Pshemo 2014-09-22 17:32:56

0

你是在構造函數中添加元素temp列表,而不是你應該這樣

 for(int i=0; i<elements.length; i++) { 
      add(elements[i]); 
     } 
+0

我明白了!非常感謝! :) – 2014-09-22 17:30:25

0

你正在創建在構造一個本地的ArrayList:

OrderedIntList(int... elements) { 
    ArrayList temp = new ArrayList(); 

你應該寫,直接傳遞的值:

public OrderedIntList(int... elements) { 
    for (int i = 0; i < elements.length; i++) { 
     add(elements[i]); 
    } 
} 
+1

我見過它,謝謝。固定。 – 2014-09-22 17:14:40

+0

我懂了!非常感謝! :) – 2014-09-22 17:28:38

1

的代碼片段添加發生這樣的事情,類集合中存在一個實用函數。 我用addAll做了一個替代。

public class OrderedIntList extends ArrayList<Integer> { 

    public OrderedIntList(int... elements) { 
     for (int element : elements) { 
      add(element); 
     } 
    } 

    public OrderedIntList(Integer... elements) { 
     Collections.addAll(this, elements); 
    } 

} 

此外ArrayList被參數化。

+0

我明白了!非常感謝你和實用功能! :) – 2014-09-22 17:29:34