java - 比 Java 中的 If(x instanceof y) 更好的方法?

标签 java if-statement abstract superclass instanceof

我有那些代码行:

    public String getAccountType(BankAccount a){
       if(a instanceof RegularAccount)
           return "RA";
       else if(a instanceof SavingsAccount)
           return "SA";
       else if(a instanceof cityAccount)
           return "CLA";
       else if(a instanceof StateLawAccount)
           return "SLA";
       else if(a instanceof FederationLawAccount)
           return "FLA";
       else
           return null;
    }

BankAccount 是下面所有类的父类(super class)(抽象)。在此方法中,我只想返回字符串中的“a”类。

但是,我想知道除了这一堆 if/else 语句之外,是否有更好的方法来验证“a”类。有吗?我可以用 switch 语句来做吗?如果是,怎么办?

最佳答案

BankAccount 上放置一个抽象方法 getAccountType(),然后让实现返回帐户类型字符串。下面是一个假设 BankAccount 是一个接口(interface)的例子:

public interface BankAccount {

    String getAccountType();

    ... whatever else ...
}

然后

public class RegularAccount implements BankAccount {

    @Override
    public String getAccountType() { return "RA"; }

    ... whatever else ...
}

如果 BankAccount 是一个类,那么就把它变成一个抽象方法。

关于java - 比 Java 中的 If(x instanceof y) 更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33880577/

相关文章:

java - 在 JSP 中生成 Excel 并通过电子邮件发送工作表

java - 是否可以在java中为Runnable接口(interface)创建对象

java - 将List转换为InputStream而不创建中间文件

java - Hadoop 类型转换

if-statement - Cloudformation::基于环境的 ManagedPolicyArns 的条件

2019 年 Java 编码风格

python-3.x - 计算低于 0 的 Pandas 数据框中的条目数

c++ - 在 C++ 中选择随机子类

C++:有什么方法可以防止抽象基类的任何实例化?

oop - 抽象方法和虚方法有什么区别?