2010-12-04 10 views
0

私はJavaでロープを勉強しています。私はArrayListsで悩んでいます。私のプログラムの要点は、いくつかのユーザ入力パラメータを取り、それらのパラメータでFooクラスを作成し、それをarraylistに追加することです。問題は、静的メソッドから非静的型を参照できないということです。私が見つけることができる唯一の例は、実際に私を助けないarraylistsに定数( "Cat"、 "5.0"など)を追加することです。これをスタティックメソッド内のarraylistに追加するにはどうすればよいですか?

私のコードの要点は以下の通りです。 arraylistを独自のクラスBarに移動し、arraylist.add(foo)だけを実行するaddメソッドを追加しました。私はループを省いたが、定義の後に何度もループするので、arraylistにはデータが取り込まれる。

public class MainClass{ 

public static void main(String[] args){ 
Scanner scanner = new Scanner(System.in); 
int a, b; 

a = scanner.nextint(); 
b = scanner.nextint(); 

Foo foo = new Foo(a, b); 
Bar.add(foo); //Complains here 
} 
} 

編集:ここでは、オブジェクトfooが作成後に変更されていないのに役立ちます場合はバーを明示的に

import java.util.ArrayList; 
public class Bar{ 
private ArrayList list = new ArrayList(); 

public void add(Foo foo){ 
    list.add(foo); 
} 
} 

です。

どうすればこの問題を回避できますか?助けを前にありがとう。

+0

なぜ動作していないすべてのコードを表示しないのですか? –

+0

ええ、あなたの* gist *にはBarの宣言がないか、エラーがあるので、あまり良い*要点ではありません* –

+0

編集;私が言ったようにエラーはかなりです。 "非静的メソッドadd(java.lang.Object)は静的コンテキストから参照できません" –

答えて

1

Barについての情報がないか、または実際にエラーが表示されない場合は、あまり役に立ちません。

Bar.addメソッドが静的でないか、またはBarが静的​​でないため、私はそれを推測します。

// a class with a public static method that encapsulates a static list 
public class Bar 
{ 
    static List<Foo> innerlist = new ArrayList<Foo>(); 

    public static void add(Foo o) 
    { 
     innerList.add(o); 
    } 
} 

「バー」は他の何かの静的リストメンバーになると考えていますか?

// a class with a static member 
public class OtherClass 
{ 
    public static List<Foo> Bar = new ArrayList<Foo>(); 
} 

その後、あなたのコードはOtherClass.Bar.add(o)だけではなくBar.add(O)が必要でしょう。バーのインスタンスを作成し、そのインスタンスにfooを追加しています:

+0

ここにはバーがあります。あなたは正しい、それは静的ではない。パブリッククラスバー{プライベートArraylistリスト=新しいArraylist(); public void add(Object O){this.add(O);}} –

+0

あなたは 'Bar'のインスタンスを作成し、メインメソッドでそれを使用するか、' add'メソッドを宣言する必要がありますあなたのバークラスで静的にして、その 'list'静的にしてください。 –

+0

ありがとう! :D –

1

あなたは、2つのオプション

オプション1を持っています。これは私の好みのオプションです

Bar b=new Bar(); 
b.add(foo); 

オプション2:あなたの追加(...)メソッドを静的にします。これはあなたの "リスト"も静的でなければならないことを意味します。どちらも悪いです。

+0

これも試してみるかもしれません。ありがとうございました。 –

関連する問題