ArrayList
にオブジェクトを追加したいのですが、objt(name, address, contact)
の3つの属性を持つArrayList
に新しいオブジェクトを追加するたびに、エラーが発生します。
import Java.util.ArrayList;
import Java.util.Scanner;
public class mainClass {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.println("Plz enter Name : ");
String name = input.nextLine();
System.out.println("Plz enter Address : ");
String address = input.nextLine();
System.out.println("Plz enter ContactNo : ");
String contact = input.nextLine();
ArrayList<Data> Contacts = new ArrayList<Data>();
Data objt = new Data();
Contacts.add(objt.Data(name, address, contact));
}
}
ここで、Data
は、オブジェクトを作成してArrayList
に渡そうとしているクラスです。
public class Data {
private String name = "";
private String address = "";
private String cell = "";
public void Data(String n, String a, String c){
name = n;
address = a;
cell = c;
}
public void printData(){
System.out.println("Name\tAddress\tContactNo");
System.out.println(name + "\t" + address + "\t" + cell);
}
}
オブジェクトを作成するときにnew
演算子を使用する必要があります
Contacts.add(new Data(name, address, contact)); // Creating a new object and adding it to list - single step
または
Data objt = new Data(name, address, contact); // Creating a new object
Contacts.add(objt); // Adding it to the list
コンストラクタにはvoid
を含めないでください。それ以外の場合は、クラスのメソッドになります。
public Data(String n, String a, String c) { // Constructor has the same name as the class and no return type as such
これを試してください:
Data objt = new Data(name, address, contact);
Contacts.add(objt);
Contacts.add(objt.Data(name, address, contact));
これは、コンストラクターを呼び出す完璧な方法ではありません。コンストラクターは、オブジェクトの作成時に自動的に呼び出されます。コンストラクタがない場合Javaクラスは独自のコンストラクタを作成します。
正しい方法は次のとおりです。
// object creation.
Data object1 = new Data(name, address, contact);
// adding Data object to ArrayList object Contacts.
Contacts.add(object1);
インスタンス化するには、ここでnew演算子を使用する必要があります。例えば:
Contacts.add(new Data(name, address, contact));