实例化泛型类型

冷冻豌豆罗迪

我正在尝试将现有的类转换为使用泛型,并且在转换构造函数时陷入困境。

最初的类是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该类,以便能够处理非Locations的目标我认为最好的方法是将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无法实例化,因此无法在线编译是否可以在这种情况下实例化泛型类型对象?

波希米亚风格

您基本上有两个选择:

1,需要一个实例

public Navigation(T t) {
    this("", "", t);
}

2.需要一个类实例:

public Navigation(Class<T> c) {
    this("", "", c.newInstance());
}

您可以使用工厂模式,但是最终您将面临同样的问题,但是只需将其推送到代码中的其他位置即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

Java泛型为何无法实例化泛型类型

来自分类Dev

打字稿泛型类型实例化

来自分类Dev

如何实例化泛型类型

来自分类Java

在Java中实例化泛型类型

来自分类Dev

Java实例化泛型类型

来自分类Dev

在Kotlin中实例化泛型类型

来自分类Dev

实例化泛型类型时,InvalidCastException

来自分类Dev

从变量实例化泛型类型

来自分类Dev

在C#中实例化泛型类型的实例

来自分类Dev

如何在Java中实例化泛型类型?

来自分类Java

泛型类型实例化和Lambda表达式

来自分类Java

如何实例化一个泛型类型?

来自分类Dev

Typescript Generic Repository - 实例化泛型类型

来自分类Java

Java实例化实现接口的泛型类型

来自分类Java

用泛型类型实例化抽象类的对象

来自分类Dev

在F#中,如何实例化泛型类型定义?

来自分类Dev

如何在F#中实例化泛型类型?

来自分类Dev

Java-实例化泛型类型的类

来自分类Dev

如何在 TypeScript 中实例化泛型类型?

来自分类Dev

获取未实例化泛型的键和值类型

来自分类Dev

实例化泛型类型以支持自定义对象

来自分类Dev

使用泛型时,如何定义泛型类型的静态实例化器?

来自分类Java

实例化泛型的参数

来自分类Dev

有没有办法在TypeScript中实例化受约束的泛型类型的实例?

来自分类Dev

如何基于泛型类型创建泛型实例

来自分类Dev

您可以在C#中实例化泛型类型参数的嵌套类型吗?

来自分类Dev

当参数化类型通过层次结构传递时,在Java中创建泛型类型的实例吗?

来自分类Dev

为什么可以在不指定泛型类型参数的情况下实例化泛型类

来自分类Dev

获取特定类型的泛型类的实例