Interface [Résolu/Fermé]

Signaler
Messages postés
34
Date d'inscription
jeudi 20 novembre 2008
Statut
Membre
Dernière intervention
14 décembre 2017
-
Messages postés
34
Date d'inscription
jeudi 20 novembre 2008
Statut
Membre
Dernière intervention
14 décembre 2017
-
Bonjour, j'aimerai avoir une explication sur l’instanciation des interfaces dans une méthode. comment ca fonctionne. S'il s'agit d' implémenter une interface et utiliser ses méthodes je comprend. ce que je ne comprend pas c'est la ligne ou j'ai instancié mon interface ResultRequestor qui à l’intérieur ajoute les méthodes de cette interface. je parle de cette ligne dans class CustomerSqlDAO ce qui se passe à l’intérieur

resultRequestor = new ResultRequestor<List<Customer>>() {

Exemple de code
Mes 2 interfaces. je precise c'est l'usage de interface ResultRequestor que j'ai pas compris. pour interface CustomerDAO pas de problème.

public interface CustomerDAO extends GenericDAO<Customer, Integer> {
List<Customer> searchBatchCustomer(CustomerCriteria customerCriteria,
Integer rangeStartAt, Integer rangeSize);
}
<code>
public interface ResultRequestor<T> {
T getResult();
void result(ResultSet resultSet);
}


la classe qui implemente CustomerDAO

public abstract class CustomerSqlDAO extends SqlDAO<Customer, Integer>implements CustomerDAO {

@Override
public List<Customer> searchBatchCustomer(CustomerCriteria customerCriteria,
Integer rangeStartAt, Integer rangeSize) {
ResultRequestor<List<Customer>> resultRequestor = null;

resultRequestor = new ResultRequestor<List<Customer>>() {
private List<Customer> result = new ArrayList<Customer>();

public List<Customer> getResult() {
return this.result;}
public void result(ResultSet resultSet) {
};
return result;
}
// fin de la methode searchBatchCustomer
} // fin de la classe CustomerSqlDAO


Je vous remercie de m'aider à ce que je comprenne cela cordialement

1 réponse

Messages postés
16365
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
16 juin 2021
2 845
Bonjour,

Tu as fait ce que l'on appelle une classe anonyme.
C'est à dire que tu as créé une classe directement dans ton code, elle n'a pas de nom, elle n'est utilisée nul part ailleurs dans ton code, mais implémente bien ton interface.

Dans tes fichiers .class tu la retrouveras dans CustomerSqlDAO$1.class
Si tu en avais plusieurs tu aurais $2, $3, etc.

Voir la documentation : Anonymous Classes

Remarque : dans ton cas (mais ce n'est pas toujours possible) tu pourrais faire une vraie classe qui implémente ton interface et l'appeler normalement
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
34
Date d'inscription
jeudi 20 novembre 2008
Statut
Membre
Dernière intervention
14 décembre 2017

Merci KX d'avoir pris ton temps pour me répondre j'ai compris ton explication cela m'aidera à avancer cordialement