-1

いくつかの例を見ていますがthis.repository=repository、コンストラクターでオブジェクトを作成することと使用 することの違いを深く理解したいと思いますRepository repository = new Repository()

public class ServiceImpl implements Service{
  private final Repository repository
  public ServiceImpl (Repository repository)
      this.repository=repository     
 }
4

5 に答える 5

1
this.repository= new Repository()

リポジトリ オブジェクトを作成し、クラスのどこからでもアクセスできるインスタンス変数に割り当てる

Repository repository = new Repository()

ローカル変数を作成し、そのメソッド内でのみアクセスできます

于 2013-09-14T09:18:09.353 に答える
1

最初のケースでは、リポジトリ オブジェクトは ServiceImpl の外部で作成され、渡されています。2 番目のケースでは、ServiceImpl がリポジトリ オブジェクトを作成しています。

どちらが正しいかは、ServiceImpl オブジェクトがリポジトリの作成を制御する必要があると考えるかどうかによって異なります。リポジトリが渡される場合、呼び出し元のコードは、たとえば、リポジトリ自体ではなく、リポジトリのサブクラスを渡すことができます。

于 2013-09-14T09:18:54.120 に答える
0

この行this.repository=repositoryは新しいRepositoryオブジェクトを作成するのではなく、parameterリポジトリをインスタンス変数に割り当てますrepository

新しいRepositoryオブジェクトを作成するには、constructor

Repository r = new Repository()

于 2013-09-14T09:16:31.807 に答える
0

Repository repository = new Repository()新しく作成された Repository オブジェクトを指す参照ハンドラ リポジトリを宣言します

thisキーワードは、何らかのメソッドが呼び出されるクラスのオブジェクトを参照します。

注:- this.repository=repositoryオブジェクトの作成ではありません。

于 2013-09-14T09:17:59.653 に答える
0

コンストラクターで

public ServiceImpl (Repository repository)
  this.repository= new Repository();
}

オブジェクトを作成するには、そのコンストラクターをnewキーワードとともに使用する必要があります。それが言語セマンティクスの設計方法です。

このようなオブジェクトを作成することはできませんthis.repository = repository。オブジェクト参照リポジトリによって参照される既存のオブジェクトを割り当てるだけです。初期化されていない場合は null

于 2013-09-14T09:20:51.857 に答える