これをどのように機能させますか?関数addintで有効なALが見つからないと言っています。さまざまな関数で int を Arraylist に追加するにはどうすればよいですか?
/**
* Constructor
*/
public Player()
{
ArrayList<int> AL = new ArrayList();
}
public void addint(int C){
AL.add(C);
}
これをどのように機能させますか?関数addintで有効なALが見つからないと言っています。さまざまな関数で int を Arraylist に追加するにはどうすればよいですか?
/**
* Constructor
*/
public Player()
{
ArrayList<int> AL = new ArrayList();
}
public void addint(int C){
AL.add(C);
}
AL
コンストラクター内で変数 (ローカル変数) を宣言しましたが、addInt
メソッドのスコープ外です。
AL
コンストラクターの外側で宣言しますが、クラス内で宣言します。また、ジェネリック型パラメーターInteger
のプリミティブ型ではなく、 を使用します。int
(プリミティブ型は、ジェネリック型パラメーターとして使用できません。)
public class Player
{
// Declare it here.
private ArrayList<Integer> AL;
public Player()
{
// Initialize it here.
AL = new ArrayList<Integer>();
}
// Now you can access `AL` in your methods.
public void addint(int C){
AL.add(C);
}
}
ArrayList<Integer> AL
(ではなく、ジェネリックでプリミティブ型を使用することはできません) をクラスのフィールドとして定義ArrayList<int>
する必要があります。現在、クラス コンストラクターでパラメーターとして定義しています。また、クラスの実装ではなく、常にインターフェースに対してプログラムすることを忘れないでList<Integer>
ください。代わりに、変数を as として宣言してください。
public class Player {
private List<Integer> AL;
public Player() {
AL = new ArrayList<Integer>();
}
public void addint(int C){
AL.add(C);
}
}
より詳しい情報:
最も簡単な方法は次のとおりです。
public class Player {
private final List<Integer> al = new ArrayList<Integer>();
public void addint(int c){
al.add(c);
}
}
List
後で実装を簡単に変更できるようにするため、通常はインターフェイスを参照する傾向があります(Joshua Bloch の本を確認してください)。new ArrayList<>();
Java7から使えます。<Integer>
フィールドを指定し、代わりに使用する必要があります<int>
:
/**
* Constructor
*/
ArrayList<Integer> AL;
public Player()
{
this.AL = new ArrayList<Integer>();
}
public void addint(int C){
this.AL.add(C);
}
int
Javaでは、ジェネリックのようにプリミティブを使用できません。Integer
のラッパークラスであるを使用する必要がありますint
ArrayList<Integer> AL = new ArrayList<Integer>();
またAL
、コンストラクター内で宣言せずに正しく機能させたい場合は、メンバー変数にする必要があるようです。これがあなたが望むものだと思います:
public class Player {
private List<Integer> AL;
public Player() {
AL = new ArrayList<Integer>();
}
public void addint(int C){
AL.add(C);
}
}
それを定義するInteger
代わりに、Wrapper クラスを使用する必要があります。int
ArrayList
ArrayList<Integer> AL = new ArrayList<Integer>();
インスタンスArrayList<Integer> AL
変数を作成します。現在はローカル変数です。