• [^] # Re: Typage

    Posté par . En réponse au message débutant java : opérations de base sur les listes. Évalué à 1.

    Hop, comme ça fait du bien de bosser un peu :

    import java.util.ArrayList;
    public class ClassA {
     private class ClassB<I extends Integer, S extends String> extends ArrayList<Object> {
     private void myAdd(Object... params) throws Exception {
     super.add(checkIn(params));
     }
     private Object checkIn(Object... params) throws Exception {
     int c=0;
     Object o=null;
     for(Object p:params)
     if(p!=null) {
     c++;
     o=p;
     }
     if(c==0)
     throw new Exception("Je veux un paramètre !");
     if(c>1)
     throw new Exception("Mais juste un seul !");
     return o;
     }
     public void addInt(I i) throws Exception {
     myAdd(i);
     }
     public void addString(S s) throws Exception {
     myAdd(s);
     }
     }
     public static void main(String[] args) throws Exception {
     ClassA a = new ClassA();
     a.doThings();
     }
     public void doThings() throws Exception {
     ClassB<Integer, String> maListeDeBidules = new ClassB<>();
     maListeDeBidules.addInt(1); // ok
     maListeDeBidules.addString("deux"); // ok
     System.out.println("mon bidule 1: "+maListeDeBidules.get(0));
     System.out.println("mon bidule 2: "+maListeDeBidules.get(1));
     maListeDeBidules.myAdd(3, "quatre"); // pas ok
     } 
    }

    Peut-être que c'est une solution qui se rapprocherait plus de ce que tu veux ? Pas sûr.

    En tout cas, dans cette v3, pas d'encapsulation d'objet, on peut étendre, c'est juste un type et une fonction à rajouter...

    On n'a pas le même style, mais encore merci pour ta réponse !

    Matricule 23415