Java 从基类中的派生类访问atributes

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

在我的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的值将是:

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);
     }
}