Java 从基类中的派生类访问atributes
在我的spring项目中,我添加了这个泛型类,以向实体类提供所有实体类都使用的一些常用方法:Java 从基类中的派生类访问atributes,java,inheritance,Java,Inheritance,在我的spring项目中,我添加了这个泛型类,以向实体类提供所有实体类都使用的一些常用方法: public abstract class object implements Comparable<object> { @Override public int compareTo(object arg0) { // TODO Auto-generated method stub return 0; } public in
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的值将是:
1=登录,2=senha,3=名字,4=姓氏,5=电子邮件
有人知道这是否可能,如果答案是肯定的,怎么办吗?我会这样做:向基类添加一个抽象方法:
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);
}
}
将值存储在父类的ArrayList或HashMap中,而不是作为原始变量?此解决方案的问题在于父类是所有实体类的基类。举个例子,我需要,如果ordem==1,通过第一个参数比较两个对象,如果ordem==2,通过第二个参数比较,如果ordem>派生类的参数数量,返回-1。我认为这很复杂,每个对象都有不同的
比较方法
,为什么要尝试泛化
。父类了解子类中数据的唯一简单方法是父类存储数据,而子类只更新父类的数据存储。
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);
}
}