从基类中的派生类访问属性

时间:2014-06-12 16:08:46

标签: java inheritance

在我的spring项目中,我添加了这个泛型类,为我的实体类提供了一些常用的方法:

public abstract class object implements Comparable<object> {

    @Override
    public int compareTo(object arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    public int compareTo(object arg0, int ordem) {
        // TODO Auto-generated method stub
        return 0;
    }

}

在第二种方法中,我需要一种方法来派生类使用ordem指示的atribute来执行比较(将被实现)。

例如,如果派生类是这样的:

public class Usuario extends object {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;

    @Column(name = "login")
    private String login;

    @Column(name = "senha")
    private String senha;

    @Column(name="first_name")
    private String first_name;

    @Column(name="last_name")
    private String last_name;

    @Column(name="email")
    private String email;

    ...

}

那么ordem的值将是:

1 =登录,2 = senha,3 = first_name,4 = last_name,5 =电子邮件。

任何人都知道这是否可行以及如果答案是肯定的怎么办?

1 个答案:

答案 0 :(得分:1)

我会这样做:向您的基类添加一个抽象方法:

protected abstract Object getArgument(int ordem);

您仍然必须在每个继承类中实现它,但您可以概括比较逻辑。您的示例的实现如下所示:

protected abstract Object getArgument(int ordem) {
     switch(ordem) {
     case 1: return login;
     case 2: return senha;
     case 3: return first_name;
     case 4: return last_name;
     case 5: return email;
     default: throw new IllegalArgumentException("Unknown ordem " + ordem);
     }
}