, :
interface DataObject {
public <T> void copyFrom(T impl);
}
:
interface DataObject {
public <T extends DataObject> void copyFrom(T impl);
}
, :
o.copyFrom(new DataObjectImpl());
o.<DataObjectImpl> copyFrom(new DataObjectImpl());
generics, DataObject . , , . , cloning.
, use interfaces only to define types.
:
interface DataObject {
byte[] getData();
Long getId();
Timestamp getCreateDtTm();
}
impl :
class DataObjectImpl implements DataObject {
public DataObjectImpl(DataObject dataObject) {
this.data = dataObject.getData();
this.id = dataObject.getId();
this.createDtTm = dataObject.getCreateDtTm();
}
}
, .