Байт-код - различия публичных и приватных атрибутов - PullRequest
4 голосов
/ 01 февраля 2012

Какая разница в байт-коде между общедоступным атрибутом и частным с простым геттером / сеттером в Java?

1 Ответ

2 голосов
/ 01 февраля 2012

С открытым полем у вас есть:

aload_0
iconst_1
putfield        #1; //Field public
return

С частным + set / get:

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.

...