我有一个抽象基类和一个实现类,例如:
public abstract class Base
{
public Base getInstance( Class<? extends Base> clazz )
{
//expected to return a singleton instance of clazz's class
}
public abstract absMeth();
}
public A extends Base
{
//expected to be a singleton
}
在这个例子中,我可以让 A 成为一个单例,甚至在 Base 中编写 getInstance 来为每次调用返回一个 A 的单例对象,这样做是这样的:
public abstract class Base
{
public Base getInstance( Class<? extends Base> clazz )
{
try
{
return clazz.getDeclaredMethod("getInstance").invoke(null,null);
}
}
public abstract void absMeth();
}
public A extends Base
{
private static A inst;
private A(){}
public static A getInstance( )
{
if( inst!= null)
inst = new A();
return inst;
}
public void absMeth(){
//...
}
}
但我关心的是如何确保如果有人编写另一个类class B extends Base
,它也应该是一个单例,并且它必须实现一个名为 getInstance 的静态方法?
换句话说,我需要将其作为与该类一起扩展的所有类的规范来强制执行Base
。