前端之家收集整理的这篇文章主要介绍了
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的地方,则不需要复制副本.
原文链接:https://www.f2er.com/java/125878.html