Так что эти 2 файла, которые я собираюсь публиковать, каждый в моем пакете 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.
}
}
Я понимаю, что это просто домашнее задание, но лучше всего было бы предоставить экземпляр DBBinding для класса DBRecord через параметр конструктора или с помощью метода setter. Используемый в сочетании с интерфейсами, вы уменьшите связь между вашими классами, что упростит их тестирование и поддержку. Если вам нужна возможность создавать эфемерные объекты в ваших методах, вы обычно предоставляете фабричный класс, который может использоваться с помощью тех же механизмов. – tvanfosson
Tvanfosson.Не совсем уверен, что вы подразумеваете под «предоставлением экземпляра DBBinding для класса DBRecord через конструктор», можете ли вы более подробно рассказать об этом и/или указать мне на некоторые ресурсы, которые обсуждают это. –
Эта концепция называется инъекцией зависимостей, http://en.wikipedia.org/wiki/Dependency_injection – tvanfosson