インスタンスをパラメーターとして関数に渡す状況によく遭遇します。代わりにオブジェクトのパラメーターを転送し、メソッド内で初期化することも同様に可能であることに気付きました。
例:
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);
}
}
この場合、4 つの整数を渡すと、変動性が減少します。理論的に言えば、脆弱性の可能性とともに、エラーの表面積を減らす必要があります。
JVM はこれら 2 つの例をどのように異なる方法で処理しますか?
エラー/脆弱性が発生しにくいのは本当にありますか?
パフォーマンスの点で、一方は他方よりも効率的ですか?
注: これはデザインの好みに関する質問ではありません。いずれの例も柔軟で効率的な方法でパラメーターをラップまたはバインドする方法は複数あります。私が知りたいのは、バイトコードレベルでの違いと、バイトコードレベルで明らかに効率的/安全であるかどうかです。