我想通过引用它的对象来创建类的对象。我已经能够在C#中实现它,但在Java中它不会工作。这就是我想要做的事情:
controller.getDal().getStudentData().getPerson() = new Person(student.getIdNumber(), student.getName(), student.getAddress(), student.getTel());
但是我收到一条错误消息:分配的左侧必须是变量
我该如何解决这个问题?我试过这样做:
register.AddStudent(controller.getDal().getStudentData().getPerson());
然后
System.out.println("Show info: " + controller.getDal().getStudentData().getPerson());
我得到的输出是:Person @ 7cd0a5d9
答案 0 :(得分:2)
Java没有c#所做的Property语法。你必须使用一个二传手。
controller.getDal().getStudentData().setPerson(
new Person(/*blah blah blah*/)
);
如果你控制任何类型的getStudentData
返回,那么你可能需要制作一个。
public void setPerson(Person newPerson)
{
this.person = newPerson;
}
答案 1 :(得分:2)
现在您正在尝试使用get方法设置新人。您无法将对象设置为函数。您的代码正确:
register.AddStudent(controller.getDal().getStudentData().getPerson());
我确实想知道在你的代码中,学生和一个人是否是同一个东西。你没有提供足够的代码供我测试并给你一个保证的答案,但我会认为你的代码应该更像这样:
register.AddStudent(controller.getDal().getStudent());
通过这种方式,您可以获得学生,然后添加学生。我不确定你要完成什么,但你应该真正研究设置方法,例如:
Person p = controller.getDal().getStudentData().getPerson();
p.setIdNumber = 0011559966
p.setAddress('123 C St');
甚至还有以下几点:
register.AddStudent(new Student("Billy", "Crystal", "123 C st"));
无论如何,如果你有更多的代码,我可以帮助你更多,但这是我能想到的最好的,没有任何真实的背景
答案 2 :(得分:1)
关于:
System.out.println("Show info: " + controller.getDal().getStudentData().getPerson());
您必须将toString()
类中的Person
方法覆盖到要在打印时看到的字段或字符串表示。
一个例子可能是:
@Override
public String toString() {
return "Name: " + this.getName() + " Id Num: " + this.getIdNumber();
}