私は最初の1年の大学の割り当ての質問をしています。私はそれについて正直になるつもりです。あなたのうちのいくつかが私の質問に投票する前に、物事を明確にしたいだけです。私は完全なコードを望んでいない、私はちょうどいくつかの助けたい。ディープコピーしてインスタンスを返すJava
質問は2つの部分に分かれています。最初の部分は、コンストラクタが2つのプロパティを持つNucleotideクラスを記述することです。 'a'または 'c'または 'g'または 't'のいずれかでなければならないbaseという単一の文字は、それ以外の場合は 'n'であり、縮退というブール値でなければなりません。
この部分のための私のコードはここにある:
class Nucleotide {
private char base;
private boolean degenerate;
public nucleotide(char base, boolean degenerate){
if(base != ‘a’ || base != ‘c’ || base != ‘g’ || base != ’t’){
this.base = ’n’;
} else {
this.base = base;
}
this.degenerate = degenerate;
}
}
質問の次の部分は、ヌクレオチドオブジェクトを使用して、新しい細菌クラスを作成すると言います。細菌の例は、ゲノム(ヌクレオチドの集合)および種(ストリング)からなる。
文字列とコレクションを受け取るコンストラクタを作成し、それらを使用して種とヌクレオチドのコレクションを初期化します( )。 この部分のための私のコードはここにある:
class Bacteria {
//private ArrayList<Nucleotide> genome;
private String species;
public Bacteria(String species, ArrayList<Nucleotide> genome) {
genome = new ArrayList<Nucleotide>();
this.species = species;
}
私の問題は深いコピーを実行し、細菌のインスタンスを返すインスタンスメソッドを書くために、私たちに求められ、次のステップから始まります。私は直列化および反射せずに深いコピーを実行するにはどうすればよい
public Bacteria binaryFission() {
。私はこれらのことについてほとんど知りません。
もう一度、私はポインタまたはbinaryFission()
メソッドを完了するために行く方法の基本的なアイデアが必要です。 私はSOにあるいくつかの深いコピーの質問を行ってきましたが、私の質問には関係しないので、私は重複した質問をしているとは思わない。私は詳細を提供してもうれしいです。
なぜあなたは '// private ArrayListゲノム;をコメントアウトしましたか? –
Bohemian
新しいリストを作成します。nucleatideを繰り返し、それぞれのコピーを作成します。コピーを新しいリストに追加し、その新しいリストでコンストラクタを呼び出して新しいBacteriaインスタンスを作成します。文字列のコピーを作成する必要はありません。これは不変であり、インスタンス間で安全に共有できるためです。 –
それはコードを複製するので、私は信じています。私はコンストラクタにもそのコードを持っています。コンストラクタのArrayListを取得することで、そこからリストを初期化できます。その部分の論理が間違っていますか? @Bohemian – Saad