当前位置: 首页 > 知识库问答 >
问题:

有没有一种方法可以根据用户输入定义要创建的对象?

华旭
2023-03-14

我已经开发了一些代码,并且我的所有方法都使用了我创建的名为Account的自定义对象。我现在把帐户分成两种不同的帐户,存款帐户和储蓄帐户。我的问题是,我的所有方法都使用原始的account对象,因此,我将不得不为每个不同类型的account使用两次相同的方法。这看起来效率很低,改变起来有点繁琐。理想情况下,我希望接受用户输入saving/destine,然后创建相关对象并重复使用,这样我就不需要定义所有方法两次。作为一个例子,这里是我的一个方法。总之,我希望这个方法对两个帐户类型执行完全相同的操作,只是在不同的对象上,并且文件的名称略有不同(filname-savings.txt和filenametransactions-savings.txt)

这是可能的,还是有更好的办法来解决这个问题?

Account account = new Account();
public void ManageAccount(String name) {

    try {
        File myObj = new File(name + ".txt");

        if (myObj.createNewFile()) {
            File myTransactionObj = new File(name + "Transactions.txt");
            myTransactionObj.createNewFile();
            // If File doesn't exist creates name.txt with 0 balance
            writer.SingleLineWriter(name, "0");
        } else {
            account.setName(name);
            String line = reader.SingleLineRead(name);

            double balance = Double.parseDouble(line);
            double newBalance = ManageBank(balance);

            writer.BalanceAppender(newBalance, name);

        }

    } catch (IOException e) {
        System.out.println("An error occurred.");
        e.printStackTrace();
    }

共有1个答案

燕超
2023-03-14

最好的方法是使您帐户作为接口与方法那些你想要的,并有两个实现为您的存款和储蓄帐户…例如..

interface Account {
    void setName(String name);
    String getName();
    void deposit(Double amount);
    void updateBalance(Double balance);
    Double getBalance();
}

class Deposit implements Account {

    private String name;
    private Double balance;

    @Override
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public void deposit(Double amount) {
        this.balance += amount;
    }

    @Override
    public Double getBalance() {
        return balance;
    }

    @Override
    public void updateBalance(Double balance) {
        this.balance = balance;
    }
}
 类似资料:
  • 问题内容: 我一直在寻找使用CSS编写的类似Google Chrome的标签,但是找不到。 我正在尝试复制外观,以便在Web应用程序或网站中使用它。 问题答案: 是的,用css3 艾夫(Ive)发表了一篇关于如何对其进行深入研究的博客,可悲的是,除非您使用图像,否则诺努斯将无法继续工作 编辑: 删除了对redeyeoperations的旧引用,现在导致其链接服务器场。这是一个较轻的版本,它在第三方

  • 问题内容: 是否有一种方法可以强制docker-machine使用特定的IP创建docker vm(假设该IP可用)? 问题答案: 在问题1709中主动请求 当我使用docker-machine create创建虚拟机时,我希望能够指定VM的IP地址(即docker-machine ls中“ URL”下列出的值)。 我想要这个是因为我一直依赖boot2docker的默认地址192.168.59.1

  • Employee(String firstName,String lastName,String address,String phoneNum,intemployeeidnum,double wageRate,double hours); JOptionPane允许我为每个变量创建单独的输入提示窗口,但这是很多窗口。我试图在一个窗口中包含所有信息,这样用户就可以填写所有7个变量,而不必点击OK/

  • 问题内容: 我正在尝试 使用用户输入 创建一个 新对象。 我尝试将用户输入分配给变量,但是在声明新对象时 不知道如何将变量添加 到新对象。这只是我需要帮助的代码部分。我需要帮助的部分是 第8行。 我知道我可以随意放置一些内容,当我使用set方法时,它将覆盖,但这不是我想要的。先感谢您 问题答案: 这取决于类的实现方式。如果Expects 参数的构造函数,则调用传递它们而不指定类型的构造函数。 请注

  • 问题内容: 给定一个结构: 以及带有结构名称的字符串 要么 如何从字符串名称而不是结构创建结构的实例?我的想法是,我将使用链接到二进制文件中的所有结构创建一个应用程序,但根据字符串创建运行时实例。(某种元元) 问题答案: Go中没有类型的中央注册表,因此在一般情况下您无法提出要求。 您可以使用从字符串到对应于每种类型的值的映射来手动建立自己的注册表来支持这种功能。例如: 然后,您可以创建如下类型的

  • 问题内容: 通过,我们可以创建/修改连接的参数,但是我想知道是否可以通过API进行相同的操作,以便可以以编程方式设置连接 似乎它只处理实际连接到实例,而不是将其保存到列表中。似乎应该已经实现了一个功能,但是我不确定在哪里可以找到该特定功能的文档。 问题答案: 连接实际上是一个模型,可以用来查询和插入新连接