我正在尝试将一个已有的类转换为使用泛型,并在转换构造函数时受阻。
原始类是一个POJO,包含文本控制台游戏中从一个房间移动到另一个房间的逻辑。实际上,它是一个包含一些字符串触发器的类(例如,用户输入“向右走”),一个描述和指向新位置的指针。
当前非泛型版本的类如下所示:
public class Navigation implements Serializable {
private static final long serialVersionUID = 1L;
private String trigger;
private String description;
private Location target;
public Navigation() {
this("", "", new Location());
}
public Navigation(String trigger, String description, Location target) {
this.trigger = trigger;
this.description = description;
this.target = target;
}
// plus getters, setters, etc.
}
(Location
类是另一个描述位置的POJO,与此无关。)
我想扩展Navigation
类以处理不是Location
的目标。 我认为最好的方法是将Navigation
类转换为使用通用类型,因此我尝试了这样做:
public class Navigation<T> implements Serializable {
private static final long serialVersionUID = 2L;
private String trigger;
private String description;
private T target;
public Navigation() {
this("", "", new T());
}
public Navigation(String trigger, String description, T target) {
this.trigger = trigger;
this.description = description;
this.target = target;
}
// plus getters, setters, etc.
}
然而,在这行代码 this("", "", new T());
中,编译不通过,因为无法实例化T
。是否有可能在这种情况下实例化泛型类型对象?
clazz.newInstance()
。这是默认构造函数。但我没有一个类。 - Roddy of the Frozen Peastarget
实例。这是您唯一的选择。 - Sotirios Delimanolis