gpt4 book ai didi

Java - 您可以从父类(super class)继承并拥有引用基类而不是父类的静态构造函数吗?

转载 作者:行者123 更新时间:2023-12-01 12:08:02 25 4
gpt4 key购买 nike

看看下面的代码

class Parent{
public static Parent instance = null;
public Parent(){}
public static Parent getInstance(){
if (instance == null)
instance = new Parent();
return instance
}
}

class Child extends Parent{
public Child(){
System.out.println("Child initialized.");
}
}

如果我希望代码在每个子类中也创建一个静态实例,我是否必须复制getInstance的代码,或者这是否有效?

最佳答案

如果我没有误解的话,您想为每个子类创建一个单例,并且不想重复代码。如果将子类的类作为参数传递给 getInstance,则可能:

class Parent{
public static HashMap<Class<? extends Parent>, Parent> instance
= new HashMap<Class<? extends Parent>, Parent>();
protected Parent(){}
public static <T> T getInstance(Class<? extends Parent> cls)
throws InstantiationException, IllegalAccessException{
if (instance.get(cls) == null) {
instance.put(cls, cls.newInstance());
}
return (T)instance.get(cls);
}
}

class Child extends Parent{
protected Child(){

}
}

Child child = Child.getInstance(Child.class);

关于Java - 您可以从父类(super class)继承并拥有引用基类而不是父类的静态构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27456108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com