在我的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 =电子邮件。
任何人都知道这是否可行以及如果答案是肯定的怎么办?
答案 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);
}
}