2013-12-20 95 views
1

我想通過引用其對象來創建類的對象。我已經能夠在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()); 

和輸出我得到的是:人@ 7cd0a5d9

回答

2

Java沒有屬性的語法,C#不。你必須使用setter。

controller.getDal().getStudentData().setPerson(
    new Person(/*blah blah blah*/) 
); 

如果你控制什麼類型getStudentData回報,可能比你必須做出一個。

public void setPerson(Person newPerson) 
{ 
    this.person = newPerson; 
} 
+0

我已經做了setter之前做這個代碼。感謝您的建議。 – Eskipo

+0

@Eskipo這完全是**幕後的c#屬性。這只是一個不同的語法 –

+0

好吧,我會盡力做到這一點,我會很快回來:) – Eskipo

1

關於:

System.out.println("Show info: " + controller.getDal().getStudentData().getPerson()); 

您必須重寫Person類你想看到在印刷領域或字符串表示內部toString()方法。

一個例子可以是:

@Override 
public String toString() { 
    return "Name: " + this.getName() + " Id Num: " + this.getIdNumber(); 
} 
+0

謝謝gtgaxiola這實際上是解決我的問題的事情之一。 – Eskipo

2

現在您要設置使用get方法一個新的人。您不能將對象設置爲函數。你在你的代碼正確的軌道上:

register.AddStudent(controller.getDal().getStudentData().getPerson()); 

我不知道,但是如果在你的代碼中,一個學生和一個人是相同的東西。您沒有提供足夠的代碼讓我測試,並給你一個保證的答案,但我會assumg你的代碼應該是更多這樣的:

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

無論如何,如果你有更多的代碼,我可以幫助你更多,但這是我能想到的最好的,沒有任何真實的上下文

+0

我試着按你說的做,但沒有奏效。在那裏我有一個聚合關係,Person是基類,Student是子類。我將展示更多代碼。 – Eskipo

+0

我解決了!謝謝你們的幫助 – Eskipo

+0

我真的不知道該給誰接受答案。 – Eskipo