2016-08-31 69 views
2

有沒有更好的方法(可能..)建立一個類,我可以使用set/get方法。 注意,所有的數據都在一個ArrayList中。在java中我的構造函數有什麼問題?

public class PorterList 
{ 
    public PorterList() 
    { 
     ArrayList<Porter> porList = new ArrayList<>(); 
    } 
    public PorterList(ArrayList<Porter> p) 
    { 
     ArrayList<Porter> porList = p; 
    }  

    SimpleDateFormat porterDF = new SimpleDateFormat("HH:mm:ss"); 
    private Porter p = new Porter(); 
    private int _porterNo; 
    public String getStatus(int porterNo) 
    { 
     _porterNo = porterNo; 
     p = porList.get(_porterNo); 
     return p.p_state; 
    } 

有一些吃虧的倒數第二行P = porList獲得(_porterNo);

我想用這樣的事情在我的主:

p_L = PorterList(p) 
porter_status = p_L.get(5) 

非常感謝您

回答

0

當你聲明ArrayList porList = p;構造函數裏面,它會成爲局部變量,因此它不會對構造函數外是可見的,如果你希望它在你的職業等級使用聲明它在全球範圍內liek低於

public class PorterList 
{ 
    private ArrayList<Porter> porList; 

    public PorterList() 
    { 

    porList = new ArrayList<>(); 

    } 
    public PorterList(ArrayList<Porter> p) 
    { 
     porList = p; 
    } 

} 
0

在這兩個你的構造你聲明局部變量porList的 - 使這個領域

public class PorterList 
{ 
    private ArrayList<Porter> porList; 

    public PorterList() 
    { 
     porList = new ArrayList<>(); 
    } 
    public PorterList(ArrayList<Porter> p) 
    { 
     porList = p; 
    } 
.... 
} 
+0

謝謝你,我明白了! – Chopin

+0

在no-arg構造函數中執行'porList = new ArrayList <>();'並從字段中移除初始值設定項,這樣就不會在第二個構造函數中浪費'new ArrayList <>()'。 – Andreas

+0

@Andreas你是對的,我在想什麼。 –

1

尤爾的ArrayList是局部變量,它的你的問題。這應該是一個領域。

private ArrayList<Porter> porList; 
public PorterList() { 
    porList = new ArrayList<>(); 
} 
public PorterList(ArrayList<Porter> p 
{ 
    porList = p; 
}