Не удается добавить элемент в список ArrayList

#java #arraylist

Вопрос:

В настоящее время у меня возникла проблема, в которой я описал параметры своего конструктора и то, что я хочу, чтобы он учитывал. Однако, пытаясь добавить элементы через ArrayList, я постоянно получаю сообщение об ошибке "identifier expected" . Есть какие-нибудь идеи о том, что я делаю не так?

Employer.java:

 public class Employer {

    private String name;
    private String email;
    private String password;
    private Employees employees;
    private STP stp;


     Employer(String name, String email, String password){
         this.name = name;
         this.email = email;
         this.password = password;
     }           
}
 

Employers.java:

 import java.util.ArrayList;

public class Employers {

    private ArrayList<Employer> employers = new ArrayList<Employer>();
    
    employers.add("John Smith", "john.smith@example.com", "super123");
}
 

Я просто пытаюсь понять, что я делаю неправильно или если я выбрал неправильный подход.

Комментарии:

1. «Ожидаемый идентификатор» появляется рядом с функцией employers.add ().

2. Пожалуйста, проверьте мой ответ ниже

3. Прежде чем публиковать здесь основные вопросы «Java 101», изучите бесплатные учебные пособия , предоставляемые Oracle. Ваш вопрос рассматривается здесь: Создание объектов . Кроме того, вы могли бы найти почти любой ответ на любой вопрос, ArrayList и вы увидели бы пример кода для эмуляции.

Ответ №1:

Вам нужно явно ввести класс

 employers.add(new Employer("John Smith", "john.smith@example.com", "super123"));
 

PS это должно быть в блоке кода

Комментарии:

1. Здравствуйте, спасибо за быстрый ответ, похоже, я все еще получаю ошибку при вводе employers.add(новый работодатель(«Джон Смит», «john.smith@example.com», «super123»)); Я получаю ожидаемое незаконное начало ошибки типа и идентификатора.

2. Ты читал мой PS ? Кроме того, оба класса находятся в одном пакете?

3. Привет, я попытался инициализировать объект отдельно, я полагаю, что они находятся в одном пакете. Employer employer = new Employer("John", "john@example", "super123"); employers.add(employer); И я тоже пытался инициализировать объект в классе Работодателя. Если я не ошибаюсь, разве это уже не было бы в блоках кода, если бы это было между { } класса, извините, если это глупый вопрос, я все еще новичок в Java.

4. Блок кода находится, например, в методе или конструкторе.

5. Рассмотрим ваш класс работодателя, где поля определены, а не блок кода. Код в конструкторе работодателя находится в блоке кода. Обычно для запуска запущенного класса java вам нужен main метод.

Ответ №2:

частный ArrayList < Работодатель> работодатели = новый ArrayList();< Работодатель>
работодатели.добавить(«Джон Смит», «john.smith@example.com», «супер123»);

Ваши работодатели относятся ArrayList Employer к этому типу. Поэтому, когда вы попытаетесь добавить что-то в список работодателей, он будет ожидать чего-то Employer подобного. Но во второй строке вы пытаетесь добавить строку, разделенную запятой. Вот почему вы не сможете добавить. Скорее всего, сначала вам нужно создать свой Employee объект, а затем добавить его, как показано ниже:

 Employer employer= new Employer("John Smith", "john.smith@example.com", "super123");
employers.add(employer); //here employer is an object of Employer type
 

Более того,я вижу, что вы переопределяете конструктор, поэтому также определите конструктор по умолчанию в своем Employer классе:

 Employer(){};
 

Комментарии:

1. Employer(){}; — где в его коде используется конструктор без аргументов?

2. Похоже, он новичок на яве. Поэтому, если где-то еще он попытается создать новый объект без конструктора arg, это выдаст ошибку. Это безопасная сторона для него.

Ответ №3:

похоже, вы пропустили создание объекта работодателя перед добавлением его в список ArrayList.

Ответ №4:

Здесь вы используете универсальный. Поэтому вы можете добавить только объект работодателя или объекты дочернего класса класса Работодателя.

Ответ №5:

   package com.java.avee;

  import java.util.ArrayList;

  public class Employers {

  public static void main(String args[]){
   ArrayList<Employer> employers = new ArrayList<Employer>();
   employers.add(new Employer("John Smith", "john.smith@example.com", 
  "super123"));
 }
}

class Employer {
private String name;
private String email;
private String password;

 Employer(String name, String email, String password){
     this.name = name;
     this.email = email;
     this.password = password;
 }           
}
 

Комментарии:

1. Пожалуйста, попробуйте это, вам нужно создать объект типа Работодатель, а затем добавить в список

2. Это не будет компилироваться, так как операторы должны находиться внутри блока кода.

3. почему он не будет компилироваться ?

4. Ну, так как вы теперь отредактировали его, комментарий больше не применяется.