Generics bei Klassen- und Interfacedeklarationen

kossy

Bekanntes Mitglied
Hallo noch einmal,

ich hätte da noch einmal eine Frage an euch. Dieses Mal geht es um Generics in Java. Ich habe diese bisher immer ausschließlich bei Datenstrukturen wie bspw. List oder Map verwendet. Ich bin mir nciht ganz sicher, was diese Generics bei dieser folgenden Deklaration bedeuten:

Code:
abstract class AbstractGenericDao<ENTITY extends Persistable<ID>, ID extends Serializable>
        implements GenericDao<ENTITY, ID>

Kann mir das vielleicht jemand weiterhelfen?

Danke und Gruß
Kossy
 
Die Generics bedeuten folgendes an der Stelle:

ID extends Serializable: Das konkrete DAO muss den Datentyp des Primärschlüssels angeben, dieser Datentyp muss serializable sein

ENTITY extends Persistable<ID>: Bedeutet zum einen dass das konrete Entity Persistable implementieren muss. Weiterer Constraint ist, dass das Persistable denselben Datentyp als Generic-Argument definiert wie im Dao angegeben.

Beispielsweise:
Java:
class Person implements Persistable<Long> {
   private Long id;

   @Override
   public Long getId(){
      return id;
   }
}

class PersonDao extends AbstractGenericDao<Person, Long> {
  ...
}
 
Hallo !

Danke für den Beitrag ! In dem folgenden Codebeispiel würde "ENTITY" also im Grunde genommen nichts anderes darstellen, als das, was im Generickopf des PersonDaos bereits deklariert wurde (also der vorliegende datentyp muss einfach nur "ENTITY extends Persistable<ID>" sein? Sind diese Genrics hier im Grunde genommen nichts anderes, als allgemeingültig und abstrakt formulierte Platzhalter?

Code:
 public PersonDao(final Class<ENTITY> entityType) {

        private final transient Class<ENTITY> entityType;

        if (PersonDao.log.isDebugEnabled()) {
            PersonDao.log.debug("Init dao for: " + entityType);
        }

        this.entityType = entityType;
    }
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben