Прошу помощи в понимании аспектов конструктора. Пример, у меня есть какой-то класс SomeClass
и какой-то объект SomeObject
, при инициализации нового экземпляра этого класса, я передаю в него выборочные данные из SomeObject
, делаю new SomeClass(someObject.getId(), someObject.getSomeField(), ..., someObject.getAnotherField());
Вопрос в следующем: Можно-ли при инициализации передать в конструктор объект и сделать выборку полей внутри конструктора как показано в Варианте 2, если нельзя то почему и чем это черевато?
public class SomeClass {
private Long someId;
private String someField;
.....
private String anotherField;
конструктор вариант 1.
public SomeClass(Long id, String someField,..., String anotherField) {
this.id = id;
this.someField = someField;
....
this.anotherField = anotherField;
}
конструктор вариант 2.
public SomeClass(SomeObject someObject) {
this.id = someObject.getId();
this.someField = someObject.getSomeField();
....
this.anotherField = someObject.getAnotherField();
}
Ключевой вопрос в следующем: класс SomeClass
предназначен исключительно для работы с экземплярами SomeObject
или это некий абстрактный расчетный класс?
Приведу пример. Есть метод, вычисляющий объем параллелепипеда
int getVolume(int x1, int y1, int z1, int x2, int y2, int z2)
и есть объект класса Кирпич
, где одними из параметров являются координаты кирпича
class Brick {
............
int getX1() { .... }
int getY1() { .... }
int getZ1() { .... }
int getX2() { .... }
int getY2() { .... }
int getZ2() { .... }
}
Вы можете, объявить метод, вычисляющий объем кирпича
int getVolume(Brick brick)
но тогда вы не сможете вычислить объем штабеля из кирпичей. Т.е. в данном случае, передавать объект не стоит и лучше передать набор параметров.
А вот если у вас метод вычисляет прочность кирпича, то тут лучше передать весь объект. Т.к. прочность можно считать только для кирпичей.
Но, для вычисления объема можно использовать интерфейс Параллелепипед
. И передавать в метод экземпляр интерфейса. Тогда в метод можно передавать любой объект, поддерживающий этот интерфейс
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть код для добавления позиций в массив и вывода графика в GraphView:
Я пишу крестики нолики, и хочу сделать пока по простому - игру с другом, где ты кликаешь мышкой по клетке и у тебя появляется крестик, потом...
Дорогие программистыПо задумке моей программы пользователь вводит несколько строк, а потом программа их выводит на экран