Java-generische Methode

Habe ich eine ganze Reihe von Klassen, die diese definieren zwei Konstanten, z.B.:

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.

Im moment habe ich eine Funktion für jeden einzelnen zu erstellen, die ein array dieser Klasse, mit der 2 Konstanten in der Klasse definiert.

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;
}

Etwas albern, müssen Sie eine Funktion erstellen, die für jede Klasse. Das einzige was sich ändert ist die Klasse type. Also ich wollte einen genertic Methode, die funktionieren würde, mit keiner der Klassen, die oben. So etwas wie:

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;
}

Aber ich bin mir nicht sicher, wie man es richtig machen. Jede Hilfe würde geschätzt werden. Danke.

Wie Borgwardt erklärt, obwohl die zu Lesen, anstatt Felder mit reflection können Sie definieren eine Schnittstelle mit zwei get Methoden.
aber dann müssten Sie eine Instanz der Klasse, um die Methoden aufzurufen, da Sie sich nicht statisch sein, und ein Teil der Klasse object.
genau, ich meinte als möglichen Schritt zur Umgestaltung des Codes. Vielleicht durch erstellen eines neuen T ersten, dann mit t.setNumPlaces(n). Oder speichern Sie die Konfiguration auch anderswo, z.B. UtilClass.getLumpIndex(Faces.class).

InformationsquelleAutor terryhau | 2011-03-26

Schreibe einen Kommentar