我在 Java 中实现 1 对 1 关联时遇到问题。例如,考虑以下类图:
我是这样实现的:
public class Student{
private AttendanceRole attendance;
public Student(AttendanceRole attendance){
this.attendance=attendance;
addTwoWayLink(this); //creates the two-way link between objects
}
public void setAttendanceRole(AttendanceRole a){ //if a students changes from
attendance = a; //part time to full time
}
}
public class AttendanceRole{
private Student student;
void addTwoWayLink(Student student){
this.student=student;
}
}
问题是这样的:
1) 假设我创建了一个学生对象,并且我想更改学生的出勤角色。在这种情况下,我调用 setAttendanceRole 方法。但我必须给它一个 attendanceRole 对象作为参数。由于这是一对一的关系,因此我给出的参数也有一个与之关联的学生。所以,这是一个问题。另外,如果没有到学生的链接,我无法创建 attendanceRole 对象,因为这是 1 对 1 关联。当我第一次尝试创建学生对象并调用其构造函数时,会发生同样的情况。我可以将 null 作为参数值,但在这种情况下,我不会损害 1 对 1 关系约束吗?我能做什么呢?
2)另外,我设计了这个类,以便我们可以创建一个学生对象并设置其AttendanceRole。我的意思是我们无法创建 attendanceRole 对象并设置其学生。这是一个坏主意吗?或者由设计者决定首先创建哪个对象。
谢谢
最佳答案
尝试重新安排您的类(class):
public enum ROLE_TYPE { FULL_TIME, PART_TIME }
public class student {
private ROLE_TYPE attendanceRole;
public SetRoleType( ROLE_TYPE type )
{
this.attendanceRole = type;
}
public GetRoleType()
{
return attendanceRole;
}
}
关于java - 在java中实现1对1类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16192255/