然后更好的方式在Java中使用(x instanceof y)吗?

use*_*935 4 java if-statement instanceof abstract superclass

我有这些代码行:

    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;
    }
Run Code Online (Sandbox Code Playgroud)

BankAccount是下面所有类的超类(抽象).在这个方法中,我只想返回String中的"a"类.

但是,我想知道是否有更好的方法来验证除这一堆if/else语句之外的"a"类.有吗?我能用switch语句吗?如果是这样,怎么样?

Wil*_*ler 12

把一个抽象方法getAccountType()BankAccount,然后让实现返回帐户类型的字符串.这是一个假设BankAccount是接口的示例:

public interface BankAccount {

    String getAccountType();

    ... whatever else ...
}
Run Code Online (Sandbox Code Playgroud)

然后

public class RegularAccount implements BankAccount {

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

    ... whatever else ...
}
Run Code Online (Sandbox Code Playgroud)

如果BankAccount是一个类,那么只需将它作为一个抽象方法.