48

これはばかげているように聞こえるかもしれませんが、なぜ@Entitys で空のコンストラクターを定義する必要があるのでしょうか?

私が見たすべてのチュートリアルは、次のように述べています。すべてのエンティティには空のコンストラクターが必要です。

ただし、Java は常にデフォルトの非表示の空のコンストラクターを提供します (再定義しない場合)。

明確にさせてください.. 「必要」で理解したのはwriteでした。

意味: エンティティには常に空のコンストラクターを記述します。

例:

@Entity
public class MyEntity implements Serializable {

   @Id
   private String str;

   public MyEntity(){}

   //here getter and setter
}

ただし、Java は、再定義しない場合 (パラメーターを使用して別のコンストラクターを作成する場合)、常にこの空のコンストラクターを提供します。

この場合、この空のコンストラクターを書くことは役に立たないようです。

4

8 に答える 8

3

実際には書く必要はありません。デフォルトで持っています。privateコンストラクターを作成して、ユーザーがデフォルトを使用できないようにすることができる場合があります

public class MyClass{

private MyClass(){} 

} 

たとえば、singelton パターンの場合、デフォルトのコンストラクターを使用してブロックできます。

Gsonプラグインを使用して文字列 Json データをオブジェクトに変換する場合、デフォルトのコンストラクターを作成する必要がある場合があります。そうしないと機能しません。

于 2013-08-07T09:08:42.090 に答える
0

クラスが引数コンストラクターを取得した場合、Javaは常にデフォルトの非表示の空のコンストラクターを提供するとは限りません。空のコンストラクターを独自に定義する必要があります。

于 2013-08-07T09:13:00.513 に答える