Elenco generici senza generici

0

Sto usando un Java molto primitivo che non ha Generics, e anche io non posso usare il reflection.

Voglio creare un elenco generico in modo che venga digitato in modo sicuro (ad esempio, ho solo un elenco contenente oggetti e voglio creare un elenco che contenga un oggetto specifico e non un mix).

D'altra parte anche io non voglio creare una classe diversa per ogni possibile elenco.

C'è un altro modo per farlo senza l'utilizzo di Generics?

    
posta user844541 06.04.2014 - 14:23
fonte

1 risposta

2

Sì, c'è. Sarà una soluzione completamente in fase di esecuzione (nessuna verifica del tipo in fase di compilazione), ma ne vale la pena (si verificherà un arresto anomalo anticipato al primo tentativo di inserire un oggetto con un tipo errato).

public class TypedArrayList extends ArrayList {
    private final Class elementType;

    public TypedList(Class elementType) {
        this.elementType = elementType;
    }

    @Override
    public boolean add(Object element) {
        // preffered version, use it if it's available on your platform
        // if (!elementType.isInstance(element)) {
        if (!elementType.equals(element.getClass())) {
             throw new IllegalArgumentException("Object of type " + element.getClass() + "passed to List of "+ elementType);
        }
        return super.add(element);
    }

    // override other methods
    // that need type checking
}

Utilizzo:

TypedArrayList list = new TypedArrayList(String.class);
list.add("works!");
list.add(new Object()); // throws exception

Puoi fare lo stesso per LinkedList e qualsiasi altro tipo di elenco.

    
risposta data 06.04.2014 - 14:46
fonte

Leggi altre domande sui tag