На самом деле это то, что я даже использую для клонирования своих клеток. Но моя проблема не в клонировании клеток, а в том, что должен вернуть метод «митоз». Что касается митоза (биологически), то образуются две идентичные клетки.
Вы зацикливаетесь на попытке заставить Java вести себя как объект реального мира.
На чем вам следует сосредоточиться, так это на правильном количестве нужных клеток после митоза, а не на том, чтобы сигнатуры метода напрямую отражали события реального мира.
Митоз - это когда одна клетка разделяется на две. IMO, любые из следующих допустимых «моделей» в Java:
метод в этой ячейке, который возвращает другую:
public Cell mitosis() {
return this.clone(); // ... or equivalent
}
метод в этой ячейке, который возвращает две ячейки:
public Cell[] mitosis() {
return new Cell[]{this, this.clone()}; // ... note - must return this as one
// of the objects
}
статический метод, который возвращает две ячейки:
public static Cell[] mitosis(Cell one) {
return new Cell[]{one, one.clone()};
}
Даже следующее может быть правильным ... если вызывающий позаботится об удалении всех ссылок на исходную ячейку.
public static Cell[] mitosis(Cell original) {
return new Cell[]{original.clone(), original.clone()};
}
Но я хочу сказать, что на самом деле не имеет значения, какие подписи. Важно то, что после того, как метод (и вызывающая сторона) сделали что-то, новая модель имеет правильные объекты Cell в правильных отношениях.