【发布时间】:2017-03-26 02:40:25
【问题描述】:
我有这个实现 Cloneable 的类。我这里只需要一个浅拷贝。谁能指出这里的 java 合规性有什么问题。
public class EventSystem implements Cloneable{
private String enrollmentId;
private String requestId;
private String tokenId;
private Date eventAt;
private Date loggedAt;
private String appCardId;
private String fieldKey;
private String fieldValue;
private String trsDimCardIssuerId;
private String trsDimCardProductId;
private String trsDimAppEventLocationId;
private String trsDimPaymentNetworkId;
private String trsDimAppCardTypeId;
private String trsTempLogId;
public Date getEventAt() {
return eventAt;
}
public void setEventAt(Date eventAt) {
this.eventAt = eventAt;
}
public Date getLoggedAt() {
return loggedAt;
}
public void setLoggedAt(Date loggedAt) {
this.loggedAt = loggedAt;
}
public String getRequestId() {
return requestId;
}
public void setRequestId(String requestId) {
this.requestId = requestId;
}
public String getEnrollmentId() {
return enrollmentId;
}
public void setEnrollmentId(String enrollemntId) {
this.enrollmentId = enrollemntId;
}
public String getTokenId() {
return tokenId;
}
public void setTokenId(String tokenId) {
this.tokenId = tokenId;
}
public String getTrsDimCardIssuerId() {
return trsDimCardIssuerId;
}
public void setTrsDimCardIssuerId(String trsDimCardIssuerId) {
this.trsDimCardIssuerId = trsDimCardIssuerId;
}
public String getTrsDimCardProductId() {
return trsDimCardProductId;
}
public void setTrsDimCardProductId(String trsDimCardProductId) {
this.trsDimCardProductId = trsDimCardProductId;
}
public String getTrsDimAppEventLocationId() {
return trsDimAppEventLocationId;
}
public void setTrsDimAppEventLocationId(String trsDimAppEventLocationId) {
this.trsDimAppEventLocationId = trsDimAppEventLocationId;
}
public String getTrsDimPaymentNetworkId() {
return trsDimPaymentNetworkId;
}
public void setTrsDimPaymentNetworkId(String trsDimPaymentNewtorkId) {
this.trsDimPaymentNetworkId = trsDimPaymentNewtorkId;
}
public String getTrsDimAppCardTypeId() {
return trsDimAppCardTypeId;
}
public void setTrsDimAppCardTypeId(String trsDimAppCardTypeId) {
this.trsDimAppCardTypeId = trsDimAppCardTypeId;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
public String getTrsTempLogId() {
return trsTempLogId;
}
public void setTrsTempLogId(String trsTempLogId) {
this.trsTempLogId = trsTempLogId;
}
public String getAppCardId() {
return appCardId;
}
public void setAppCardId(String appCardId) {
this.appCardId = appCardId;
}
public String getFieldKey() {
return fieldKey;
}
public void setFieldKey(String fieldKey) {
this.fieldKey = fieldKey;
}
public String getFieldValue() {
return fieldValue;
}
public void setFieldValue(String fieldValue) {
this.fieldValue = fieldValue;
}
}
这里的字符串复制有问题吗。
【问题讨论】:
-
它不工作吗?错误是什么?
-
我很确定文档强烈建议不要在任何情况下使用 clone()。如果你真的需要另一个实例,你可以实现一个复制构造函数。
-
@pathfinderelite - 它工作正常。我唯一的问题是它再次符合 java 规范。但这符合我浅拷贝的目的。
-
我会说......这看起来像是一个设计问题。 A)一个有这么多领域的类......可能做的事情太多了 B)确定你需要那里的所有那些二传手吗?请注意:您的大多数属性都是字符串。您也可以在这里使用 Map ...但不要误会我的意思:也许您的代码就可以了;但好吧,如果它是我的;我会大幅修改它。
-
这是一个 DAO 类,它旨在拥有这些。无论如何,问题是,我们在克隆这个方面还有问题吗?