#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. Ну, так как вы теперь отредактировали его, комментарий больше не применяется.