我经常遇到将实例作为参数传递给函数的情况。我突然想到,同样可以转发对象的参数,并在方法内进行初始化。
例子:
class MyCanvas extends JComponent {
private static final long serialVersionUID = 1L;
private static ArrayList<String> textData;
private static ArrayList<Rectangle> rectData;
@Override
public void paintComponent(Graphics g) {
if(g instanceof Graphics2D){
//Draw the rectangles and text
}
}
public void addText(int x, int y, String text){
textData.add(text);
}
//Do this:
public void addRect(Rectangle rect){
rectData.add(rect);
}
//Or do this?
public void addRect(int x, int y, int z, int q){
rectData.add(new Rectangle(x, y, z, q);
}
}
在这种情况下,传递四个整数可以减少可变性。从理论上讲,应该减少错误表面积以及潜在的漏洞。
JVM 如何以不同的方式处理这两个示例?
是否真的不容易出错/易受攻击?
一个在性能方面会比另一个更有效吗?
注意:这不是关于设计偏好的问题。有多种方法可以包装或绑定参数,以使任一示例都灵活高效。我只想知道字节码级别的区别是什么,以及字节码级别是否明显更有效/更安全。