所以我要發佈的這兩個文件都在我的DataBase包中。 DBBinding類只需創建一個對象,其中包含一個字符串和一個值。然後,DBrecord將保留一組DBBindings,它們都具有相同的密鑰字符串,但具有不同的值字符串。出於某種原因,我無法想象/找到在DBrecord中添加方法的正確方法,以便它調用DBBinding類/對象構造函數。無法從同一個包中的不同類中構造函數被識別。
這是應該添加綁定的方法:
private void addRecord(String key_, String value_)
{
//DBBinding myDBBinding=new DBBinding(key_, value_);//constructor not defined error
//DBBinding myDBBinding(key_,value_);
//DataBase.DBBinding myDBBinding=new DataBase.DBBinding(key_, value_);//constructor not defined error
}
這裏的DBBINDING碼,然後按DBrecord代碼。
package DataBase;
public class DBBinding {
private String key;
private String value;
public void DBBinding(String key_, String value_)
{
String key =new String(key_);
String value=new String(value_);
}
//public String toString()
//{return key+": "+value;}
}
和
package DataBase;
//package DataBase.*;
import DataBase.*;//did not help ... ?
public class DBrecord {
boolean select;
String key;
//need some type of collection to keep bindings.
public void DBrecord()
{
DBrecord myRecord=new DBrecord();
select=false;
}
private void addRecord(String key_, String value_)
{
//DBBinding myDBBinding=new DBBinding(key_, value_);//constructor not defined error
//DBBinding myDBBinding(key_,value_);
//DataBase.DBBinding myDBBinding=new DataBase.DBBinding(key_, value_);//constructor not defined error
}
public String toString()
{
//out put key first then all values in collection/group/record. use correct formatting.
}
}
我意識到這只是家庭作業,但最好的做法是通過構造函數參數或使用setter方法爲DBRecord類提供DBBinding實例。與接口一起使用,可以減少類之間的耦合,使它們更易於測試和維護。如果你需要在你的方法中創建短暫對象的能力,你通常會提供一個可以通過相同機制使用的工廠類。 – tvanfosson 2012-03-24 17:58:55
Tvanfosson。不太清楚「通過構造函數將DBBinding實例提供給DBRecord類」的意思,能否詳細說明這一點和/或指向一些討論此問題的資源。 – 2012-03-24 18:14:51
這個概念被稱爲依賴注入,http://en.wikipedia.org/wiki/Dependency_injection – tvanfosson 2012-03-24 18:18:16