JavaでArrayListにオブジェクトを追加する方法

オブジェクトを ArrayList に追加したいのですが、3つの属性を持つ新しいオブジェクトを 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
解説 (1)

これを試してみてください。

Data objt = new Data(name, address, contact);
Contacts.add(objt);
解説 (0)

インスタンス化するには、ここでnew演算子を使わなければなりません。例えば、以下のようになります。

Contacts.add(new Data(name, address, contact));
解説 (0)