2011-12-20 11 views
2

具体的には、アプローチはより多くのリソースを消費します:public static変数を操作するか、またはset()get()メソッドを操作しますか?どのアプローチがより多くのリソースを消費しますか:静的またはゲッター/セッター?

+0

なぜ近い票? –

+0

私はあなたがどのような種類のリソースを意味するかに関してこの質問を少し拡大する必要があると思います。ちなみに、私はこれらの2つが必ずしも互換性のあるオプションではないと考えています。静的変数を使用すると、特定の方法でコードを設計する必要があります。私はゲッターとセッターをすべての "普通の理由"のためだけに使うことをお勧めします。 – posdef

+0

AndroidでJ2MEを尋ねても、ベストプラクティスがあります。内部ゲッター/セッターを使用しないでください。説明[ここ](http://developer.android.com/guide/practices/design/performance.html#internal_get_set) – PeterMmm

答えて

0

public staticフィールドへのアクセスには、setter/getterメソッドよりもリソースが少なくて済みます。現代のホットスポットJVMを使用している場合、最小の違いがあります。

0

通常のフィールドへのアクセス以上に消費します。あなたはおそらくstaticを意味しませんでした。

2

実際の実行環境に依存するので、これはわかりません。 JIT、AOTまたはHotspotコンパイラは、潜在的なメソッドのオーバーヘッドを非常にうまく最適化するかもしれません。

2

get()set()のメソッドを使用すると、属性に直接アクセスするよりもコストがかかる可能性があります(ただし、コンパイラまたはJITではメソッド呼び出しを最適化しますが)とにかくその差はごくわずかです。また、一般的には、すべての属性をstaticと宣言してはならず、定数値のみを宣言してください。

一方、get()およびset()のメソッドを使用すると、データのカプセル化を実行するための好ましいオプションであり、オブジェクト指向プログラミングの優れた方法です。これらのメソッドを持たないため、属性を外部に公開し、実装の詳細を隠すクラスの能力を低下させ、実装の将来の変更をより困難にします。

2

アクセサーメソッドを導入すると、クラスファイルのサイズが大幅に増加します。しかし:

  • 邪悪されているが、ビットOOを好む、そして行動の方法でカプセル化するのではなく
  • 無意味な決まり文句で構造体を書いて、あなたはおそらくあなた
  • のオブジェクトコードを圧縮します難読化ツールを見つけることができます
関連する問題