0 votes

comment faire de cette méthode une méthode générique en java ?

public void setSRC(int var)
{
    if (src== null)
    {
        src = new int[1];
        src[0] = var;
    }
    else
    {
        int i = 0;
        int[] temp = null;
        temp = new int[src.length];
        temp = src;
        i = temp.length;
        src = new int[i+1];
        for (int j =0; j < temp.length ; j++)
                    src[j] = temp[j];
        src[i] = var;

    }
}

Je cherche à faire de cette méthode une méthode générique ou un modèle. Toute forme d'aide est appréciée. J'attends avec impatience

5voto

jqno Points 7831

Utilisez des collections, plutôt que des tableaux. Outre le fait que les tableaux Java ne sont pas compatibles avec les génériques, ils sont en fait conçus pour être complétés. Votre code peut être remplacé par :

private List<T> src = new ArrayList<T>();

public <T> void setSRC(T var) {
    src.add(var);
}

0voto

Mykola Golubyev Points 21210

Utilisez les collections génériques à la place des tableaux Java.

public <T> void setSRC(T var)

au lieu de

new int[1]

utiliser

Collection<T> collection = new ArrayList<T>();

0voto

Andreas_D Points 64111

Cette notation est assez déroutante pour les débutants en Java. Voici donc l'exemple de jqno pour les valeurs de type Integer :

private List<Integer> src = new ArrayList<Integer>();

public void setSRC(Integer var) {
    src.add(var);
}

Maintenant src est une ArrayList qui ne peut stocker que des objets de type Integer, et c'est très proche de votre question. Elle ne peut pas stocker des valeurs int (le type int n'est pas un objet) mais Java 5/6 convertit int en Integer si nécessaire (autoboxing), de sorte que vous pouvez appeler setSRC avec (int) i.

Si vous voulez utiliser des tableaux et que vous devez en modifier la taille, jetez un coup d'œil à la méthode System.arraycopy(..).

-1voto

Curtis Tasker Points 2239

Ce code va créer une classe avec un type de données générique et va stocker un tableau dynamique d'objets de ce type de données.

import java.util.*;
class Test2<T>
{
    private Collection<T> src = new Vector<T>();

    public void setSRC(T var)
    {
        src.add( var );
    }

    public static void main( String[] args )
    {
        Test2 t = new Test2<Integer>();
        t.setSRC( 5 );
        Test2 t2 = new Test2<Double>();
        t.setSRC( 5.5 );
    }
}

Le fait est que, si c'est tout ce que vous faites, il n'y a pas besoin de s'embêter. Il semble que vous essayez d'écrire votre propre classe de tableau dynamique, et Java dispose d'un grand nombre de classes du type Cadre des collections à choisir. Pourquoi réinventer la roue ?

Maintenant, si vous essayez de faire quelque chose de spécifique, dites-nous ce que vous essayez d'accomplir et nous pourrons vous donner une meilleure réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X