Null Exception при попытки модификации обьекта класса Java
При попытке модификации полей класса выдает Null Exception. Собственно код. Ошибку выдает при вызове метода Create
Основной класс
public class Dealership implements CRUD {
private Car car;
private List<Car> cars = new ArrayList<>();
public Dealership() {}
@Override
public void Create() {
this.cars.add(car.Modify(car));
}
@Override
public void GetById(int id) {
for(int i=0;i<this.cars.size();i++) {
if(cars.get(i).getId()==id) {
System.out.println(
"Id: "+cars.get(i).getId()+" Model: "+cars.get(i).getModel()+
" Dealer: "+cars.get(i).getDealer()+"Speed: "+cars.get(i).getSpeed()+"\n"); }
}
}
@Override
public void GetByModel(String model) {
for(int i=0;i<this.cars.size();i++) {
if(cars.get(i).getModel()==model) {
System.out.println(
"Id: "+cars.get(i).getId()+" Model: "+cars.get(i).getModel()+
" Dealer: "+cars.get(i).getDealer()+"Speed: "+cars.get(i).getSpeed()+"\n");
}
}
}
@Override
public void GetByDealer(String dealer) {
for(int i=0;i<this.cars.size();i++) {
if(cars.get(i).getDealer()==dealer) {
System.out.println(
"Id: "+cars.get(i).getId()+" Model: "+cars.get(i).getModel()+
" Dealer: "+cars.get(i).getDealer()+"Speed: "+cars.get(i).getSpeed()+"\n");
}
}
}
@Override
public void GetByMaxSpeedLimit(double speed) {
for(int i=0;i<this.cars.size();i++) {
if(cars.get(i).getSpeed()>speed) {
System.out.println(
"Id: "+cars.get(i).getId()+" Model: "+cars.get(i).getModel()+
" Dealer: "+cars.get(i).getDealer()+"Speed: "+cars.get(i).getSpeed()+"\n"); }
}
}
}
Наследник:
public class Car extends Dealership implements CCRUD{
private int id;
private String model;
private String dealer;
private double speed;
public Car() {
this.id = 0;
this.model = "None";
this.dealer = "None";
this.speed = 0;
}
@Override
public Car Modify(Car c) {
Scanner in = new Scanner(System.in);
id = in.nextInt();
model = in.nextLine();
dealer = in.nextLine();
speed = in.nextDouble();
in.close();
return c;
}
@Override
public int getId() {
return this.id;
}
@Override
public String getModel() {
return this.model;
}
@Override
public String getDealer() {
return this.dealer;
}
@Override
public double getSpeed() {
return this.speed;
}
}
Ответы (1 шт):
Автор решения: dmtr
→ Ссылка
В методе Create() вы вызываете метод this.cars.add(car.Modify(car));. В car.Modify(car) вы пытаетесь передать ссылку, определенную выше private Car car;.
NPE возникает, потому что private Car car; не содержит ссылки на объект, вы передаете пустую ссылку. Нужно создать экземпляр объекта и присвоить его этой ссылке, например через оператор new.