root76 a écrit :
Bonjour,
quel est l'intéret d'avoir une interface comme attribut d'une classe, pourriez vous donner un exemple?
merci
|
cela te permet d'écrire des méthodes génériques qui puissent être utilisée par toutes les classes dérivants de ton attributs interface.
Par exemple,
Code :
- public class ExampleList {
- private List list_;
- public void incrList() {
- for (int i = 0; i < list_.size(); i++) {
- Integer j = (Integer) list_.get(i);
- int incrj = j.intValue() + 1;
- list_.set(i, new Integer(incrj));
- }
- }
- public String toString() {
- String lResult = "";
- for (int i = 0; i < list_.size(); i++) {
- lResult += list_.get(i) + " ";
- }
- return lResult;
- }
- public ExampleList(ArrayList pList) {
- list_ = pList;
- }
- public ExampleList(Vector pList) {
- list_ = pList;
- }
- public static void main(String[] args) {
- // Utilisation avec une ArrayList
- ArrayList lArrayList = new ArrayList();
- lArrayList.add(new Integer(1));
- lArrayList.add(new Integer(2));
- lArrayList.add(new Integer(3));
- ExampleList lList1 = new ExampleList(lArrayList);
- lList1.incrList();
- System.out.println(lList1);
- // Utilisation avec un Vector
- Vector lVector = new Vector();
- lVector.add(new Integer(2));
- lVector.add(new Integer(3));
- lVector.add(new Integer(4));
- ExampleList lList2 = new ExampleList(lVector);
- lList2.incrList();
- System.out.println(lList2);
- }
- }
|
Les méthodes incrList et toString sont communes que l'attribut soit une ArrayList ou un Vector.
Le principal intérêt est donc de n'écrire des méthodes que pour une seule interface plutôt que pour chacune des classes qui l'implémente.