我的课Book
可以有很多Authors
。我将类的几个对象传递给类Author
的构造函数,Book
然后复制这些对象,Arrays.copyOF
但是如果我更改Author
对象之外的任何数据,它将在任何地方更改,因此这意味着尚未创建副本。
我想创建深拷贝。代码正在编译和运行,没有错误。
import java.util.Arrays;
public class Book {
private String tytul;
private int rokWydania;
private Author[] autorzy;
public Book(String tytul, int rokWydania, Author... autorzy) {
this.tytul = tytul;
this.rokWydania = rokWydania;
this.autorzy = Arrays.copyOf(autorzy, autorzy.length);
}
public String toString() {
String s = " Tytuł: " + tytul +"\nrok wydania: " + rokWydania + "\n";
if(autorzy.length == 1)
s+=" Autor: " + autorzy[0];
else{
s+=" Autorzy: " + autorzy[0];
for(int i = 1; i < autorzy.length; i++)
s+="\n " + autorzy[i];
}
return s + "\n\n";
}
public static void main(String[] args) {
Author a1 = new Author("Isabel", "Allende", 1942);
Author a2 = new Author("Manueala", "Gretkowska", 1964);
Author a3 = new Author("Piotr", "Pietucha", 1954);
Book b1 = new Book("Suma naszych dni", 2010, a1);
Book b2 = new Book("Polka", 2001, a2);
Book b3 = new Book("Sceny z życia pozamałżeńskiego", 2003, a2, a3);
a2.zmienInformacje("Tove", "Jansson", 1956);
Book b4 = new Book("Lato muminków", 2006, a2);
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(b4);
}
}
public class Author {
private String imie, nazwisko;
private int rokUrodzenia;
public Author(String imie, String nazwisko, int rokUrodzenia) {
this.imie = imie;
this.nazwisko = nazwisko;
this.rokUrodzenia = rokUrodzenia;
}
public String getImie() {
return imie;
}
public String getNazwisko() {
return nazwisko;
}
public int getRokUrodzenia() {
return rokUrodzenia;
}
@Override
public String toString() {
return imie + " " + nazwisko + " (ur. " + rokUrodzenia + ")";
}
public void zmienInformacje(String imie, String nazwisko, int rokUrodzenia) {
this.imie = imie;
this.nazwisko = nazwisko;
this.rokUrodzenia = rokUrodzenia;
}
}
期望的输出:
Tytuł: Suma naszych dni
rok wydania: 2010
Autor: Isabel Allende (ur. 1942)
Tytuł: Polka
rok wydania: 2001
Autor: Manuela Gretkowska (ur. 1964)
Tytuł: Suma naszych dni
rok wydania: 2010
Autorzy: Manuela Gretkowska (ur. 1964)
Piotr Pietucha (ur. 1954)
Tytuł: Lato muminków
rok wydania: 2006
Autor: Tove Jansson (ur. 1956)
我的输出
Tytuł: Suma naszych dni
rok wydania: 2010
Autor: Isabel Allende (ur. 1942)
Tytuł: Polka
rok wydania: 2001
Autor: Tove Jansson (ur. 1956)//WRONG
Tytuł: Sceny z życia pozamałżeńskiego
rok wydania: 2003
Autorzy: Tove Jansson (ur. 1956)//WRONG
Piotr Pietucha (ur. 1954)
Tytuł: Lato muminków
rok wydania: 2006
Autor: Tove Jansson (ur. 1956)