Java Class が Serializable のインスタンスになるのはいつなのだろうか。私が知っているように、クラスはシリアライズ可能なインターフェイスを実装している場合にのみシリアライズ可能です。junit を使用して (ある種のテンプレートから) エンティティ クラスを生成し、シリアライズ可能かどうかを確認しようとしています。
生成されたクラス (Serializable を実装していない) は次のようになります。
package test;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.annotation.Generated;
import javax.persistence.Id;
@Entity
@Table( name = MyTestTableDto.TABLE_NAME )
public class MyTestTableDto
{
public static final String TABLE_NAME = "MY_TEST_TABLE";
public static final String COLUMN_MY_ID_FIELD = "MY_ID_FIELD";
public static final String FIELD_MY_ID_FIELD = "myIdField";
@Id
@Column( nullable = true, length = 14, name = COLUMN_MY_ID_FIELD )
private Long myIdField;
public Long getMyIdField()
{
return myIdField;
}
public void setMyIdField( Long aMyIdField )
{
this.myIdField = aMyIdField;
}
}
テストは以下です。
File generatedFile = new File( GEN_OUTPUT_DIR, File.separator + className + ".java" );
assertTrue( generatedFile.getClass() instanceof Serializable ); //returns true
結果は、生成されたクラスが Serializable のインスタンスであることを示唆しています。私の質問はなぜですか?Serializable を実装していない場合は、インスタンスにするべきではないと思います。答えを探しましたが、何も見つかりませんでした。