我在寻找答案时发现了类似的问题,但是,他们都没有回应我的要求。
我创建了一个模特'会议'
@Entity
@Scope("prototype")
@Table(name="MEETINGS")
public class Meeting {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@NotEmpty
@Column(name="name", nullable=false)
private String name;
@NotEmpty
@Column(name="description", nullable=false)
private String description;
@NotEmpty
@Column(name="allowStartStopRecording", nullable=false)
private String allowStartStopRecording;
@NotEmpty
@Column(name="autoStartRecording", nullable=false)
private String autoStartRecording;
@NotEmpty
@Column(name="record", nullable=false)
private String record;
@NotEmpty
@Column(name="voiceBridge", nullable=false)
private String voiceBridge;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getAllowStartStopRecording() {
return allowStartStopRecording;
}
public void setAllowStartStopRecording(String allowStartStopRecording) {
this.allowStartStopRecording = allowStartStopRecording;
}
public String getAutoStartRecording() {
return autoStartRecording;
}
public void setAutoStartRecording(String autoStartRecording) {
this.autoStartRecording = autoStartRecording;
}
public String getRecord() {
return record;
}
public void setRecord(String record) {
this.record = record;
}
public String getVoiceBridge() {
return voiceBridge;
}
public void setVoiceBridge(String voiceBridge) {
this.voiceBridge = voiceBridge;
}
}
并尝试创建DAO' MeetingDAO',
public interface MeetingDAO {
Meeting meeting;
String createMeeting();
String deleteMeeting();
String getMeetings();
String updateMeeting();
}
我收到以下错误:空白的最终字段会议可能尚未在包含会议会议的行中初始化;
提前谢谢。
答案 0 :(得分:3)
您正尝试在界面中声明成员变量:
public interface MeetingDAO {
Meeting meeting;
您无法在接口中声明成员变量。成员meeting
会自动生成public static final
(即常量)并且您没有初始化它。
请勿在{{1}}界面中声明meeting
。如果需要声明类型为MeetingDAO
的成员变量,请在实现该接口的类中执行。但坦率地说,如果Meeting
的实现具有MeetingDAO
类型的成员变量,那将是奇怪的 - 所以你可能根本不应该有这个成员变量。
(另外,为什么界面中的所有方法都返回Meeting
并且没有接受任何参数?这看起来不太符合逻辑。)
答案 1 :(得分:1)
请查看:https://docs.oracle.com/javase/tutorial/java/IandI/interfaceDef.html
据说:
接口中定义的所有常量值都是隐式公共的, 静态的,最后的。再一次,您可以省略这些修饰符。
因此接口Meeting meeting;
中的变量声明MeetingDAO
原来是:public static final Meeting meeting;
你没有初始化它。这就是你得到的原因:blank final field meeting may not have been initialized
编译错误。
您的界面MeetingDAO
可能如下所示(其他变体也可能):
import java.util.List;
public interface MeetingDAO {
void createMeeting(Meeting meeting);
Meeting getMeeting(long meetingId);
void deleteMeeting(long meetingId);
List<Meeting> getMeetings();
void updateMeeting(Meeting meeting);
}
您怎么看?