我想创建一个通用函数,它将根据文本文件的争用来填充HashMap<String,TYPE extends GameObject>
。它应该适用于实现方法TYPE
和getName()
的任何fromString()
。目前,我发现了障碍,我无法调用TYPE
的构造函数。
代码:
public static <TYPE extends GameObject> void loadHashMap( Map<String,TYPE> mp, String filename ){
BufferedReader reader = FileSystem.getReader( filename );
String line;
try{
while( null != ( line = reader.readLine() ) ){
TYPE item = new TYPE(); item.fromString( line ); // alternative 1
// TYPE item = new TYPE( line ); // alternative 2
mp.put( item.getName(), item );
};
} catch (Exception e) { e.printStackTrace(); };
}
其中GameObject
定义为:
public class GameObject {
String name;
public String getName(){ return name; };
public void fromString( String s ){ name = s; }
public GameObject ( ){ }
public GameObject ( String s ){ name=name; }
}
答案 0 :(得分:1)
在Java中,所有模板类型在编译时都会被删除,因此您不应该执行new TYPE()
之类的操作。您需要找到另一种创建实例的方法。