java - 如何让 java 单例对象管理器返回任何类型的对象?

标签 java design-patterns class singleton

我正在用 Java 从头开始​​编写一个交互式小说游戏。我目前将我所有的游戏对象引用存储在一个名为 ObjectManager 的单例中的 HashMap 中。 ObjectManager 有一个名为 get 的函数,它接受一个整数 ID 并返回适当的引用。问题是当我需要返回具有更多功能的 BaseObject 的子类时,它返回一个 BaseObject。

到目前为止,我所做的是添加了一个返回 BaseEntity(BaseObject 的子类)的 getEntity 函数。但是,当我需要函数返回一个对象,该对象是添加了所需功能的 BaseEntity 的子类时,我将需要创建另一个函数。我知道有更好的方法,但我不知道它是什么。我对设计模式知之甚少,我不确定在这里使用哪一个。我尝试将“类”作为参数传递,但这并没有让我得到任何结果。

public BaseObject get(int ID){
    return (BaseObject)refMap.get(ID);
}

public BaseEntity getEntity(int ID){
    return (BaseEntity)refMap.get(ID);
}

谢谢,Java 忍者!

最佳答案

如果您有 Java 5 运行时,请使用通用返回类型:

public <Entity extends BaseEntity> Entity getEntity(int ID){
    return (Entity)refMap.get(ID);
}

关于java - 如何让 java 单例对象管理器返回任何类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2844989/

相关文章:

java - Android Studio 中的增强现实

java - 处理自定义 Java 注释的模式

objective-c - 当我们只能使用 NSObject 时,为什么还要使用 id?

python - 通过字符串引用类名?

python - 带有 required_arg、*args、**kwargs 的类定义

java - 为什么这是一个未经检查的类型转换?以及如何解决?

java - 为什么程序中输入错误

java - UML和代码关系

java - JSoup 加载时间太长,有时无法获取正确的数据

java - 如何使用 Vaadin 框架在 Web 应用程序中构建正确的架构?请帮忙!