【发布时间】:2012-02-23 16:46:40
【问题描述】:
在 Java 中,公共属性和使用简单 getter/setter 的私有属性的字节码有什么区别?
【问题讨论】:
标签: java private bytecode public
在 Java 中,公共属性和使用简单 getter/setter 的私有属性的字节码有什么区别?
【问题讨论】:
标签: java private bytecode public
使用公共字段,您有:
aload_0
iconst_1
putfield #1; //Field public
return
使用私有 + 设置/获取:
aload_0
iconst_1
putfield #1; //Field private
return
public int getA();
Code:
0: aload_0
1: getfield #1; //Field private
4: ireturn
public void setA(int);
Code:
0: aload_0
1: iload_1
2: putfield #1; //Field private
5: return
所以从性能的角度来看,private + set/get 只会带来不必要的开销。但它具有架构优势,应该被 JavaBeans 等一些约定使用。
【讨论】: