【发布时间】:2011-12-20 09:27:46
【问题描述】:
所以我有一些“经理”类,例如 GroupManager。所有这些经理都是单身人士。
使用此方法进行实例化:
private static GroupManager groupManager = null;
private GroupManager()
{
}
public static GroupManager Instance()
{
if (groupManager == null)
{
groupManager = new GroupManager();
}
return groupManager;
}
我想我应该开始使用一些继承,因为它们有很多复制的方法。
每个 Manager 的 Instance() 方法都是相同的。
所以对于继承我可以这样做(显然):
GroupManager extends Manager
是否可以使用泛型为所有管理器使用相同的实例方法,例如:
public class Manager<E>
{
private static E instance = null;
public static E Instance()
{
if (instance == null)
{
instance = new E();
}
return instance;
}
}
我认为这是有道理的:)
那么你会像往常一样执行 GroupManager.Instance()。
【问题讨论】:
-
Java 泛型与 C++ 模板完全不同!放手吧!您永远不能使用 Java Generic 分配对象(即调用 new)。尝试在 Google 上搜索“Java 类型擦除”
-
Manager
E 是对泛型类型的引用。没有简单的方法可以设置一个类来分配仅在运行时才知道的类型的对象。 Reid Mac 的答案是我会尝试的。 -
您在手工编码的单例中遇到的限制是人们使用 Spring 或 Guice 等容器来管理单例生命周期的重要原因。
-
另外,tihs 不会编译:“无法对非静态类型 E 进行静态引用”
标签: java generics inheritance static singleton