ter*_*hau 2 java generics methods
我有一大堆定义这两个常量的类,例如:
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.
Run Code Online (Sandbox Code Playgroud)
目前,我有一个函数为每个人创建该类的数组,使用类中定义的2个常量.
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;
}
Run Code Online (Sandbox Code Playgroud)
每个班级都有一个创造功能有点傻.唯一改变的是类类型.所以我想创建一个适用于上述任何类的基因方法.就像是:
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;
}
Run Code Online (Sandbox Code Playgroud)
但是我不确定如何正确地做到这一点.任何帮助,将不胜感激.谢谢.
可以使用的唯一方法是使用反射通过类对象读取常量并Array.newInstance()创建数组.哦,方法签名必须如下所示:
private <T> T[] createFaces(RandomAccessFile in, Class<T> clazz)
Run Code Online (Sandbox Code Playgroud)
编辑 另一种解决方案是将常量保持在按类而不是静态字段键入的映射中.Java只是不够动态,尤其是在类级别上,以干净利落的方式完成它.