小编Bra*_*rah的帖子

Java继承并避免不断使用instanceof

我有三个类,一个抽象用户和两个特定的:NormalUser,它包含一个或多个Address对象的ArrayList,可以是不同的(国内,国际,自定义等),然后是Admin类,它有一个返回true的方法.它们都包含更多彼此无关的方法.

abstract class User{
    public User(String username, String pw){
 ...

}

public class NormalUser extends User{
...
    private ArrayList<Address> addresses;

...

    public void addAdress(ArrayList<Address> address){
        addresses.addAll(address);
}

public class Admin extends User{

...
    public boolean getIsAdmin(){
        return true;
  }
}
Run Code Online (Sandbox Code Playgroud)

现在在另一个类中,如果我像这样制作4个用户对象:

    ArrayList<User> users;

    users.add(new NormalUser( "1", "pw");
    users.add(new NormalUser( "2", "pw");
    users.add(new NormalUser( "3", "pw");
    users.add(new NormalUser( "4", "pw");
    users.add(new Admin("5", "pw"));
    users.add(new NormalUser( "6", "pw");
Run Code Online (Sandbox Code Playgroud)

并说我想在NormalUser中使用addAddress方法,然后我必须将用户中的specfic用户向下转换为NormalUser,然后才能在NormalUser中使用addAddress方法,如下所示:

     if (user instanceof NormalUser){
        NormalUser normal = (NormalUser) user;
        normal.addAddress(...)
        }
Run Code Online (Sandbox Code Playgroud)

我希望NormalUser和Admin都成为用户的原因是我可以在登录时一起处理它们.

我想到将addEmail添加到User类,然后在NormalUser类中重写它,但是我必须为NormalUser类中的每个方法执行此操作,而且Admin也会从User继承它,当它不需要时功能. …

java inheritance arraylist instanceof

5
推荐指数
1
解决办法
1144
查看次数

标签 统计

arraylist ×1

inheritance ×1

instanceof ×1

java ×1