java – 应该MAIN方法复制输入参数?

前端之家收集整理的这篇文章主要介绍了java – 应该MAIN方法复制输入参数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有人可以想象这段代码
public static void main(final String[] args) {
   // do something
}

应该成为这样

public static void main(final String[] args) {
   String[] argsCopy = doCopy(args);
   // do something
}

(在我们公司,我们有一个声纳规则,强制所有方法的应对或争论.)我可以想象为什么它对于标准方法可能是重要的,但是在开始工具主要方法时我找不到任何好处.我错过了什么吗?

解决方法

复制数组参数的原因是为了避免在验证其元素后有人修改数组的可能性.这是一种非常好的防御技术,可以保护您免受来电者的恶意呼叫.

但是,在这种情况下,调用者是JVM本身.如果您不信任JVM来免除恶意代码,那么与复制数组可以解决的问题相比,它的问题要大得多.

唯一的例外是当您将参数传递给您的某些功能时.在这种情况下,制作副本是一个很好的主意,以防某些方法决定更改args的内容.这是我建议复制的唯一的情况.如果main是唯一使用args的地方,则不需要复制副本.

猜你在找的Java相关文章