【发布时间】:2015-02-14 10:42:43
【问题描述】:
我最近发现的一个声纳问题是 “恶意代码漏洞 - 可能通过合并对可变对象的引用来暴露内部表示”
例如,理想情况下,Eclipse 应该为日期生成设置器,如下所示
public void setBillDate(Date billDate) {
this.billDate = (Date)billDate.clone();
}
如何强制 Eclipse 生成这样的代码?
【问题讨论】:
我最近发现的一个声纳问题是 “恶意代码漏洞 - 可能通过合并对可变对象的引用来暴露内部表示”
例如,理想情况下,Eclipse 应该为日期生成设置器,如下所示
public void setBillDate(Date billDate) {
this.billDate = (Date)billDate.clone();
}
如何强制 Eclipse 生成这样的代码?
【问题讨论】:
Window -> Preferences -> Java -> Code Style -> Code Templates
启用项目特定设置
你会看到“Setter Body”,编辑:
${field} = ${param};
你需要的代码可以写成
try {
${field} = ${param}.getClass().cast( ${param}.clone() );
} catch( CloneNotSupportedException cnse ){
// whatever
}
我承认我不知道参数类是否有模板变量。正在调查...
【讨论】: