2016-05-30 4 views
1

Ich habe ähnliche Fragen bei der Suche nach einer Antwort gefunden, aber keiner von ihnen reagiert auf meine Anfrage.Kann das leere letzte Feld nicht initialisieren

habe ich ein Modell 'Versammlung

@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; 
} 


} 

und bei dem Versuch, ein DAO ‚MeetingDAO‘ zu erstellen,

public interface MeetingDAO { 

Meeting meeting; 

String createMeeting(); 

String deleteMeeting(); 

String getMeetings(); 

String updateMeeting(); 
} 

Ich habe folgende Fehlermeldung: Der Rohling letzte Sitzung Feld nicht haben kann wurde in der Zeile initialisiert, die Besprechungssitzungen enthält;

Vielen Dank im Voraus.

Antwort

1

haben Sie einen Blick auf: https://docs.oracle.com/javase/tutorial/java/IandI/interfaceDef.html

Es wird gesagt, dass:

Alle konstante Werte in einer Schnittstelle definiert implizit öffentlich sind, statisch und endgültig. Auch hier können Sie diese Modifikatoren weglassen.

So ist die Deklaration von Variablen Meeting meeting; in Schnittstelle MeetingDAO erweist sich als: public static final Meeting meeting; Sie es nicht initialisierten links. Dies ist der Grund, warum Sie erhalten: blank final field meeting may not have been initialized Kompilierungsfehler.

Eine andere Sache, Ihre Schnittstelle MeetingDAO wie folgt aussehen könnte (andere Varianten sind möglich):

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); 
} 

Was denken Sie? Ja

+0

Das ist genau das, was ich versuchen zu tun und es funktioniert – Najoua

3

Sie versuchen, eine Membervariable in einer Schnittstelle zu deklarieren:

erklären
public interface MeetingDAO { 

    Meeting meeting; 

Sie können nicht in Schnittstellen Membervariablen. Das Element meeting wird automatisch public static final (d. H. Eine Konstante) gemacht und Sie initialisieren es nicht.

Nicht meeting in der MeetingDAO Schnittstelle deklarieren. Wenn Sie eine Elementvariable vom Typ Meeting deklarieren müssen, tun Sie dies in einer Klasse, die die Schnittstelle implementiert. Aber ehrlich gesagt wäre es seltsam, wenn eine Implementierung von MeetingDAO eine Elementvariable vom Typ Meeting hätte - also sollten Sie diese Elementvariable wahrscheinlich gar nicht haben.

(Warum gibt auch alle Methoden in der Schnittstelle String zurück und nehmen keine Parameter? Das sieht nicht sehr logisch aus).

+0

, sind Sie hier richtig ich einen großen Fehler gemacht, habe ich nicht achten Sie auf dieses gut, für die zurückkehrenden Arten, ich war gerade testen, werden sie verschiedene Typen haben und Parameter – Najoua