2012-05-06 4 views

答えて

6

それが正常に直接メンバーにアクセスするには、カプセル化と隠ぺいは、クラスの外を対象としています。

あなたがそれについて考えるとき、あなたは直接とにかくそれをアクセス:

private void useList() 
{ 
    String temp = getList().get(0); // access "via accessor" ----------+ 
    System.out.println(temp);           | 
}                  | 
                     | 
public ArrayList<String> getList()          | 
{                  | 
    return theList; // but you actually directly access it here... <--+ 
} 
1

あなたが単純か明確であると信じて何をすべき。

コードがウォームアップすると、パフォーマンスの違いは何もありません。私が単純なケースで行ったテストでは、その差は平均して0.1ns未満である可能性があります。

1

実際には、アクセサメソッドを使用するほうが優れていますが、拡張用に設計されたクラスでのみ使用されます。これは、例えば、Spring Frameworkのコードでは非常に一般的です。 protectedアクセサーメソッドを記述することで、APIのクライアントがオーバーライドしてプライベートフィールドではなく完全に異なるものを提供できるようになります。

2

メソッドを使用してメンバーにアクセスする(同じクラスの内部からアクセスする場合も同様)ので、コードの保守性が向上します。あなたのクラスの将来のバージョンでは、リストはそのクラスに保存されなくなりましたが、他の場所に保存されることを考慮してください。または、リストの値が導出され、リストをその場で派生させたい場合もあります。このような状況では、ゲッター/セッターメソッドは、作業、バグ、重複したコードを節約することができます。ゲッターで新しいロジックをコーディングするだけで、あなたは行くことができます!したがって、保守性が必要な場合は、getterとsetterを使用してください。

関連する問題