所以我要发布的这两个文件都在我的DataBase包中。 DBBinding类只需要创建一个带有键的字符串和值的对象。然后DBrecord将保留一组DBBindings,它们都具有相同的键字符串但不同的值字符串。出于某种原因,我无法思考/找到在DBrecord中创建add方法的正确方法,以便它调用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.
}
}
答案 0 :(得分:4)
在课程DBBinding
中,您必须拥有public DBBinding(String key_, String value_)
,void
实际上将“构造函数”设为方法:-)
DBrecord
中有同样的错误。
顺便说一下,不要这样做:
String key =new String(key_);
字符串是不可变的,如果你“分享”它们就不会发生任何事情。但是您的代码强制Java为完全相同的值创建一个新对象。所以只需使用
String key = key_;
但是,在您的情况下,即使这是错误的,因为您创建了一个新的局部变量key
“遮蔽”类变量key
。请查看here以获取解释。
所以总共DBBinding
应该是这样的:
package DataBase;
public class DBBinding {
private String key;
private String value;
public DBBinding(String key_, String value_)
{
key = key_;
value = value_;
}
...
}
答案 1 :(得分:2)
如果您希望代码正常工作,请从构造函数中删除void
构造。
签名差异 构造函数和方法在签名的三个方面有所不同:修饰符,返回类型和名称。与方法类似,构造函数可以具有任何访问修饰符:public,protected,private或none(通常称为包或友好)。与方法不同,构造函数只能使用访问修饰符。因此,构造函数不能是抽象的,最终的,本机的,静态的或同步的。
返回类型也非常不同。方法可以有任何效果 返回类型,或没有返回类型,在这种情况下给出返回类型 无效。构造函数没有返回类型,甚至没有返回。