泛型方法中参数的构造方法(java)

时间:2015-12-06 13:14:23

标签: java templates generics constructor

我想创建一个通用函数,它将根据文本文件的争用来填充HashMap<String,TYPE extends GameObject>。它应该适用于实现方法TYPEgetName()的任何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; }
}

1 个答案:

答案 0 :(得分:1)

在Java中,所有模板类型在编译时都会被删除,因此您不应该执行new TYPE()之类的操作。您需要找到另一种创建实例的方法。

请参阅Create instance of generic type in Java?