Listen und Sicherungen gegen Interfaces

Lit-Web

Grünschnabel
Hallo,

also ich habe eine Anwendung in der ich meine Models gegen Interfaces sicher, meine DAOs gegen Interfaces sichere und meine Services ebenfalls gegen Interfaces sichere.

Kurze Struktur:

UserModelInterface.java
UserModel.java
UserModelDaoInterface.java
UserModelDao.java
UserServiceInterface.java
UserService.java

Nun mein Problem und Beschreibung was ich vorhabe.

Im DAO gibt es eine Methode die eine Liste von Model Objekten zurück geben soll. getAllUsers();

Ich möchte den Datentyp aber gegen mein Interface sichern.

Kurzes Code Beispiel

Java:
// Methode aus dem System User Dao
public List<SystemUserModelInterface> getAllUsers() {
        List<SystemUserModelInterface> list = super.getSession().createQuery("from SystemUserModel order by lastname ASC, firstname ASC").list();
        return list;
    }

// Interface Sicherung
public List<SystemUserModelInterface> getAllUsers();

// Methode aus dem UserService
public List<SystemUserModelIItnerface> getAllUsers() {
        return systemUserDao.getAllUsers();
    }

// Sicherung SystemUserInterface
public List<SystemUserModelInterface> getAllUsers();


Nun werde ich allerdings in der ersten gezeigten Methode angschimpft das das zugweiesene Listenobjekt mit dem Interface Datentyp nicht übereinstimmt.

Wie kann ich denn mit Interfaces und tatsächlichen Datentypen in Form einer Liste umgehen so das meine Sicherung gegen das Interface auch konstant bleibt?

Danke für eure Hilfe.
 
Nun werde ich allerdings in der ersten gezeigten Methode angschimpft das das zugweiesene Listenobjekt mit dem Interface Datentyp nicht übereinstimmt.

Was meinst du mit angeschimpft, meinst du das Warning "Warning: Unchecked cast from ... to ..."? Oder tritt ein Fehler auf?? Ich vermute ersteres. Der Code sieht für mich nach Hibernate aus, allerdings habe ich damit noch nie gearbeitet. Du hättest es eventuell dazuschreiben sollen ;-) Ich glaube aber, dass die Query selbst nicht weiß, welches Objekt sie zurückgibt, d.h. ich nehme an du erhälst eine Liste von Objekten oder so.

Das Warning wirst du entweder mit @SuppressWarnings("unchecked") los oder indem du die Elemente gecastet in eine eigene Liste einfügst.
 
Zurück