Java méthode générique

J'ai tout un tas de classes qui définissent ces deux constantes, par exemple:

public class Face
{
    public static final int LUMP_INDEX = 1;
    public static final int SIZE = 20;

    blah blah
}

public class Edge
{
    public static final int LUMP_INDEX = 5;
    public static final int SIZE = 32;

    blah blah
} 
etc.

À l'instant, j'ai une fonction pour chacun de créer un tableau de cette classe, à l'aide de l'2 constantes définies dans la classe.

private Face[] createFaces(RandomAccessFile in)
{
    int numFaces = doSomeCalculations(Face.LUMP_INDEX, Face.SIZE);
    Face[] faces = new Face[numPlanes];

    blahblah;
    for(int i = 0; i < numFaces; i++)
        faces[i] = new Face();

    return faces;
}

Un peu ridicule d'avoir créer une fonction pour chaque classe. La seule chose qui change est le type de classe. J'ai donc voulu créer un genertic méthode de travail avec l'une des classes ci-dessus. Quelque chose comme:

private T[] create(RandomAccessFile in, Class T)
{
    int num = doSomeCalculations(T.LUMP_INDEX, T.SIZE);
    T[] faces = new T[numPlanes];

    blahblah;
    for(int i = 0; i < num; i++)
        faces[i] = new T();

    return faces;
}

Cependant, je ne suis pas sûr de savoir comment le faire correctement. Toute aide serait appréciée. Merci.

  • Comme Borgwardt dit, même si au lieu de champs de lecture, de réflexion, vous pouvez définir une interface avec deux get méthodes.
  • mais alors, vous auriez besoin d'une instance de la classe pour appeler les méthodes, puisqu'ils ne peuvent pas être statique et une partie de la Classe de l'objet.
  • exactement, je voulais dire comme une étape possible de refactoriser le code. Peut-être par la création d'une nouvelle T d'abord, puis à l'aide de t.setNumPlaces(n). Ou de stocker la configuration ailleurs, par exemple, UtilClass.getLumpIndex(Faces.class).
InformationsquelleAutor terryhau | 2011-03-26