Как инициализировать объект java
Есть класс Bottle, в нём создан конструктор Bottle, в конструкторе нужно передать созданный внутри конструктора массив в объект SparklingWater water для того, чтобы массив использовать в другом классе и методе (в методе pump). Как бы я не инициализировал объект - когда компилятор доходит до water.pump(this.bobbles) - падает ошибка "nullPointerException" из-за того, что water: null.
- Как в данном классе правильно инициализировать объект water?
2.Нужно ли при создании конструктора
Bottleуказывать параметрSparklingWater water?
public class Bottle {
private double volume;
private SparklingWater water;
public Bubble[] bobbles;
public Bottle(double volume) throws InterruptedException {
Bubble[] bobbles = new Bubble[(int) (volume * 10000)];//заполнилось массивом пузырьков из расчёта объёма
this.bobbles = bobbles;
//тут проблема
setWater(water);
this.water = water;
water.pump(this.bobbles);
}
public void open() {
this.water.setOpened(true);
//System.out.printf(" Set water statement to 'open' ").println();
}
public void warm(int temperature) {
temperature = 40;
//System.out.printf(" Warming water to %s", temperature).println();
}
public SparklingWater getWater() {
return this.water;
//System.out.printf(" Getting 'Water' object");
}
public void setWater(SparklingWater water) {
this.water = water;
//System.out.print(" Add new 'water' object ");
}
}
Ответы (1 шт):
В конструктор Bottle конечно нужно передать объект SparklingWater water, если он там используется, иначе откуда этой water там взяться? И раз уж среди полей класса есть volume, то желательно его тоже инициализировать в конструкторе. Или удалить из списка полей, если он дальше нигде не используется.
public Bottle(double volume, SparklingWater water){
this.volume = volume; // так или удалить из списка полей
Bubble[] bobbles = new Bubble[(int) (volume * 10000)];
this.bobbles = bobbles;
this.water = water;
water.pump(this.bobbles);
}
Тогда, вызывая конструктор Bottle, Вам нужно передать два аргумента: volume типа double и water типа SparklingWater.