gpt4 book ai didi

Java - 动态选择要创建的子类/对象

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

我想要实现的目标:

我目前正在更深入地研究 Java,尝试创建一个程序来读取银行帐户的 .csv 导出并使用它来做一些很酷的事情。

由于不同的银行有不同的文件导出,因此我创建了一个抽象类 Bank,其中仅包含普遍存在的数据字段,例如在任何交易中转账的资金。然后,我为每个单独的银行创建了一个子类,每个子类都扩展了抽象 Bank 类。在每个子类中,我创建了一个文件加载器方法来管理其特定的 .csv 标准。

我的问题:我希望程序在读取任何给定文件时动态决定在运行时使用哪个 Bank 子类。然后,该子类使用其方法来读取文件,以及将哪些数据传输到其父类(super class)。但是,我不想每次添加新子类时都添加新的 if(inputString ==bankSubclassName) {bankSubclass.loadFile() }

是否可以创建一个在运行时读取参数的系统,例如。一个字符串,然后使用“链接”到该参数的子类中的方法?每次添加新子类时无需编辑主程序?

目前,我似乎出现了心理障碍,完全陷入困境。也许有更好的方法?

提前致谢!

最佳答案

如果您不介意传递要加载的类的名称,则可以使用 Class 方法动态加载特定子类并调用 newInstance() 来创建该子类的一个对象。

Class c = Class.forName("some.pkg.name." + inputString);
Bank obj = (Bank)c.newInstance();

在此示例中,inputString 必须是您的子类的名称,obj 将是它的一个实例。

这些方法均已记录:https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html

关于Java - 动态选择要创建的子类/对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61924311/

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