2016-08-31 11 views
2

私は方法を設定/取得に使用可能なクラスを構築するためのより良い方法は(たぶん...)あります。 お知らせの持ち運びにくいすべてのデータは、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; 
    } 

、第2の最後の行のp = porListに.get(_porterNo)に間違った何かがあります。

私は私のメインの中でこのようなものを使用したい:

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

は、ローカル変数porListを宣言した非常に多くのあなたのコンストラクタの両方で

答えて

0

。それは、コンストラクタの外に表示されませんので、コンストラクタ内で、それはあなたがそれはあなたのクラスレベルで使用する場合は、グローバル

public class PorterList 
{ 
    private ArrayList<Porter> porList; 

    public PorterList() 
    { 

    porList = new ArrayList<>(); 

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

} 
0

をありがとう - このフィールド

public class PorterList 
{ 
    private ArrayList<Porter> porList; 

    public PorterList() 
    { 
     porList = new ArrayList<>(); 
    } 
    public PorterList(ArrayList<Porter> p) 
    { 
     porList = p; 
    } 
.... 
} 
作りますあなたはArrayListのporList = Pを宣言したよう
+0

感謝の男が、私はそれを感謝します! – Chopin

+0

います 'porList =新しいArrayListを<>();'引数なしのコンストラクタで、あなたは '新しいのArrayListを無駄にしないように、フィールドから初期化子を削除<>()'秒コンストラクタインチ – Andreas

+0

@アンドレアスあなたが正しいです、私は何を考えていましたか? –

1

ヨールArrayListのは、ローカル変数であり、それはだ下回っliekでそれを宣言し、ローカル変数になりますあなたの問題。それはフィールドでなければなりません。

private ArrayList<Porter> porList; 
public PorterList() { 
    porList = new ArrayList<>(); 
} 
public PorterList(ArrayList<Porter> p 
{ 
    porList = p; 
} 
関連する問題