gpt4 book ai didi

java - 在基类中访问派生类的属性

转载 作者:行者123 更新时间:2023-12-01 12:51:34 25 4
gpt4 key购买 nike

在我的 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 指示的属性来执行比较(待实现)。

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

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=名字、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);
}
}

关于java - 在基类中访问派生类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24189082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com