Java:如何使用超类的静态方法从其创建子类的实例

Sani Elfishawy

我的特定问题是,我想在基类中创建一个静态方法,该方法将子类的实例保存在文件中。基类中的另一个静态方法将检索数据并重新创建子类的实例。

除了我需要在基类的静态方法中创建子类的实例的策略之外,所有这些都可以正常工作。请在下面查看我的意思。

因此,通常的问题是在Java中,如何从超类的Static方法中创建子类的实例。

class Base

    public static Void saveAllInstances(){
       saveAttributesofAllInstancesInFile();  // this works
    }

    public static Void retrieveAllInstances(){
       destroyAllInstances(); // this works
       getInstanceAttributesFromFile();  // this works and returns e.g. ArrayList<HashMap>

       for( instanceAttributes : retrievedInstances ){

         // Here is the part I cant figure out: I want to create an instance of 
         // the subclass here 
         sub = new Sub();

         sub.setAttributes(instanceAttributes); //this works
       }
}

class Sub extends Base{
}
Sani Elfishawy

使用工厂模式可以正常工作。并在伪代码中看起来像这样:

class MainFactory{

    protected Worker makeWorker(){
        return new Worker();
    }

    public createIntanceOfSubworker(){
       Worker i = makeWorker()
    }
}

class SubFactory extends MainFactory{
    @override
    protected SubWorker makeWorker(){
        return new SubWorker();
    }
}

class Worker{
}

class SubWorker extends Worker{
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以使用超类的类工厂静态方法创建子类实例吗?

如何使用超类的构造函数创建子类的实例

如何使用超类构造函数创建子类的实例?

Java继承:创建子类实例时如何调用超类方法?

如何从超类创建子类的实例的数组

如何从超类创建子类的实例?

如何使超类方法返回子类的实例

如何创建给定超类的每个子类的实例?

如何在Java中从其超类方法停止/退出子类方法执行

如何在Groovy中从静态超类方法引用子类

我如何在超类方法中使用子类的静态字段

Python-如何从子类实例调用超类的方法?

使用子类和超类引用访问实例方法

如何使用超类的实例访问子类的覆盖变量

Java如何使用超类构造函数设置子类实例变量

使用TypeScript从基类中的静态方法实例化子类

Java,子类而不是超类的实例

Java:从子类获取超类的实例

Scala-超类在其方法中实例化其子类?

对子类实例使用超类类型

我该如何使用最终的setter方法创建超类的不可变子类?

如何使用私有成员 Java 创建带有子类的工作超类

将子类转换为其超类,但仍能够使用子类的方法和属性

如何在超类的静态方法中检索子类的静态属性

如何从抽象类的静态方法创建具体类的实例

如何在JEXL中创建Java类的静态方法而不创建该类的实例?

您如何在Java中从超类调用子类方法?

静态方法返回其类的实例

如何使用最终方法PHP防止子类重写超类