java - 字节码——公共(public)属性和私有(private)属性的区别

标签 java private bytecode public

在 Java 中使用简单的 getter/setter 的公共(public)属性和私有(private)属性在字节码上有什么区别?

最佳答案

有了 public 领域,你有:

aload_0
iconst_1
putfield        #1; //Field public
return

使用私有(private) + 设置/获取:

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)使用。

关于java - 字节码——公共(public)属性和私有(private)属性的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9088469/

相关文章:

java - 冲突的内容提供者

java.lang.RuntimeException : javax. mail.MessagingException : [EOF](Caused by: javax. mail.MessagingException: [EOF])

php - PHP 类中的可见性重要吗?为什么?

Java:访问修饰符比 'protected' 更严格,比 'private' 更严格?

java - 如何根据输入创建不同的 spring beans

java - 转义模式中除某些元字符外的所有字符

module - 如何从子模块中的结构访问私有(private)字段?

python - 为什么使用全局解释器锁?

eval - 在字节码编译语言中实现 REPL/eval

java - 如何测量类文件中字节码指令的数量?