java - 用另一个类成员初始化一个类成员

标签 java initialization default

@Entity
@Table(name = "artist")
public class Artist implements java.io.Serializable{

    @Basic
    @Column(name = "is_active",nullable=false)
    private Boolean isActive = false;

    @OneToMany(mappedBy = "artist", cascade = {CascadeType.ALL}, fetch = FetchType.LAZY)
    private Set<Project> projects= new HashSet<Project>(); 
}

@Entity
@Table(name = "project")
public class Project implements java.io.Serializable{

     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "artist_id")
     private Artist artist;

     @Basic
     @Column(name = "is_active",nullable=false)
     private Boolean isActive = false;
}

我可以像下面这样在 Project 中初始化 isActive 吗,目的是让 Project 的标志由 Artist 初始化> 的旗帜

private Boolean isActive = ((getArtist()!=null)? getArtist().getIsActive(): false);

Project 中定义成员的顺序是否会导致 isActive 始终为 false?

最佳答案

带有该声明:

private Boolean isActive = ((getArtist()!=null)? getArtist().getIsActive(): false);

isActive 将始终为 false,因为艺术家和 isActive 都将在 Project 的默认构造函数之前初始化。因此,artist 被初始化为 null,然后 isActive 被初始化为 false(因为 getArtist() 为 null),然后 Project 的默认构造函数运行(但构造函数不执行任何操作),因此 isActive 始终为 false。

关于java - 用另一个类成员初始化一个类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11863720/

相关文章:

java - 如何使用 bufferedreader 将预定文本设置为用户输入?

swift - 错误 : Cannot assign to '...' in 'self'

C++变量声明和初始化规则

default - 如何在mantis中配置 "Assign To"列表

java - 迁移到 Google App Engine 上的 Java 8 后,XPathFactory#newInstance() 无法为默认对象模型创建 XPathFactory 错误

java - 如何检查用户输入的字符串是否正确? ( java )

c - 将字符串文字与数组分配给 char

android - 如果开发人员未指定任何字体,android 中使用的默认字体是什么

c - C中函数调用的默认参数

java - JAVA 中的守护进程线程组是什么?