如何通过引用属性来创建对象

时间:2013-12-20 20:27:49

标签: java methods

我想通过引用它的对象来创建类的对象。我已经能够在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

3 个答案:

答案 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();
}