2016-10-22 20 views
1

私はちょうどarrayListをよく知っているようにしようとしており、テストプログラムを作っています。他のクラスのarrayListにデータを追加したいだけです。それは「法はタイプテストで(ArrayListの)追加の引数(文字列)には適用されません」と述べている。ここ 別のクラスのarrayListにデータを追加

package arrayList; 

import java.util.ArrayList; 
import java.util.List; 

public class arrayList 
{ 

    public static void main(String[] args) throws Exception 
    { 
    ArrayList<String> cityList = new ArrayList<String>(); 
    // Add some cities in the list 

    Test add = new Test(); 

    add.add("Dallas"); 

    System.out.print(cityList); 
} 
} 

は、ArrayListの パッケージのArrayListにデータを追加するクラスです。

import java.util.ArrayList; 
import java.util.List; 

public class Test 
{ 
    public final ArrayList<arrayList> floors = new ArrayList<>(); 

    public void add(arrayList cityName) 
    { 
    floors.add(cityName); 
    } 
} 
+1

どういうところですか? –

+0

@DaveNewton、申し訳ありません、私はそれを編集しました。コンパイラエラーです。 – mrprogrammer231

+0

'floors'配列または' cityList'配列に追加しますか? – Bitonator

答えて

1

あなたがいる間だけArrayList<arrayList>Stringを追加しようというだけの理由

「方法はタイプテストで(ArrayListの)を追加 引数(文字列)には適用されません」タイプarrayListのオブジェクトが必要です。あなたはクラスの外からあなたのリストにアクセスしたい場合は

// My list of String 
private final List<String> floors = new ArrayList<>(); 

public void add(String cityName) { 
    // Add a String to my list of String 
    floors.add(cityName); 
} 

、あなたのクラスTestgetterを追加することができます。

はあなたのリストにStringを追加することができるよう、次のコードを変更、次のように:あなたは、クラス外で作成したリストから、あなたのリストを初期化したい場合は

public List<String> getFloors() { 
    return floors; 
} 

、あなたのクラスにコンストラクタを追加することができTest 、次のように:

private final List<String> floors; 

public Test(List<String> floors) { 
    this.floors = floors; 
} 

NB:私は簡単な答えを提供初心者ですが、直接上記のコンストラクタのようにあなたのクラスの外から来るリストを使用することをお勧めではないことに注意してくださいと上記のゲッターのようにあなたのリストを直接返すことができます。良い方法は、コンストラクタの場合には提供されたリストのコピーを作成し、ゲッターの場合にはリストのコピーまたはリストの変更不可能なバージョンを返すことによって、バグを防ぐために外部のクラスからリストを保護することです。

+0

他のクラスのデータを受け入れる場所に変更する方法を教えてください。 – mrprogrammer231

+0

私はあなたの質問を理解しているかどうかわからない、あなたの明確化することができますか? –

+0

これは、実際のarrayListクラスではなく、Testクラス内に新しいarrayListを作成しているだけですか? – mrprogrammer231

関連する問題