Interface

Résolu/Fermé
ourysho Messages postés 34 Date d'inscription jeudi 20 novembre 2008 Statut Membre Dernière intervention 14 décembre 2017 - 21 oct. 2017 à 14:12
ourysho Messages postés 34 Date d'inscription jeudi 20 novembre 2008 Statut Membre Dernière intervention 14 décembre 2017 - 21 oct. 2017 à 16:31
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

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
21 oct. 2017 à 16:06
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
ourysho Messages postés 34 Date d'inscription jeudi 20 novembre 2008 Statut Membre Dernière intervention 14 décembre 2017
21 oct. 2017 à 16:31
Merci KX d'avoir pris ton temps pour me répondre j'ai compris ton explication cela m'aidera à avancer cordialement
0