クローンしたいオブジェクトの正確なコピーをclone()
作成するメソッドを使用します。複製を許可するには、クラスに interface を実装する必要があります。次に、実装するインターフェースから clone メソッドをオーバーライドする必要があります。Cloneable
ちょっとした例:
public class TableClass implements Cloneable {
private DefaultTableModel model;
@Override
public Object clone() {
DefaultTableModel cloned = null;
try {
cloned = (DefaultTableModel) super.clone();
}
catch (CloneNotSupportedException ex) {
Logger.getLogger(TableClass.class.getName()).log(Level.SEVERE, null, ex);
}
return cloned;
}
clone()
メソッドが のインスタンスを返すためObject
、オブジェクトの型にキャストする必要があります。cloned = (DefaultTableModel) super.clone()
これが作業方法clone()
です。これで、独自の tableMode を実装できます。
基本的な例:
public class YourTableModel extends AbstractTableModel implements Cloneable {
private static final String[] columnNames = {"URL", "Progress", "Size", "Status"};
private static final Class[] columnClasses = {String.class, String.class, String.class, String.class};
private List<T> yourData;
@Override
public Object clone() {
YourTableModel cloned = null;
try {
cloned = (YourTableModel) super.clone();
}
catch (CloneNotSupportedException ex) {
Logger.getLogger(TableClass.class.getName()).log(Level.SEVERE, null, ex);
}
return cloned;
}
@Override
public Object getValueAt(int row, int col) {
switch (col) {
case 0:
return yourData.getName();
case 1:
return yourData.getAge();
case 2:
return yourData.getAddress();
case 3:
return yourData.getSomethingElse();
}
return "";
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public int getRowCount() {
return downloadList.size();
}
@Override
public String getColumnName(int col) {
return columnNames[col];
}
public Class getClassName(int col) {
return columnClasses[col];
}
}
このようにして、独自のモデルも clone() メソッドを実装すると、このオブジェクトのクローンを作成できます。しかし、書いた@vizierのような他のアプローチもあります
それが役に立てば幸い!