我想知道Java类什么时候是Serializable的实例。据我所知,只有实现 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 它不应该是它的实例。我搜索了一个答案,但我找不到任何东西。