0

所以我要发布的这两个文件都在我的数据库包中。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. 
    }



}
4

2 回答 2

4

在课堂DBBinding上你必须有public DBBinding(String key_, String value_)void使“构造函数”实际上是一个方法:-)

你有同样的错误DBrecord

顺便说一句,不要这样做:

String key =new String(key_);

字符串是不可变的,如果你“共享”它们,什么都不会发生。但是您的代码强制 Java 为绝对相同的值创建一个新对象。所以只用

String key = key_;

但是,在您的情况下,这也是错误的,因为您创建了一个新的局部变量key“遮蔽”类变量key在这里寻找解释。

所以总的来说DBBinding应该是这样的:

package DataBase;

public class DBBinding {

    private String key;
    private String value;

    public DBBinding(String key_, String value_)
    {
        key = key_;
        value =  value_;
    }
    ...
}
于 2012-03-24T17:55:50.263 回答
2

如果您希望您的代码工作,请void从您的构造函数中删除该构造。

签名差异构造函数和方法在签名的三个方面有所不同:修饰符、返回类型和名称。与方法一样,构造函数可以具有任何访问修饰符:public、protected、private 或 none(通常称为包或友好)。与方法不同,构造函数只能使用访问修饰符。因此,构造函数不能是抽象的、最终的、本机的、静态的或同步的。

返回类型也非常不同。方法可以有任何有效的返回类型,也可以没有返回类型,在这种情况下,返回类型为 void。构造函数没有返回类型,甚至没有 void。

于 2012-03-24T17:58:03.040 回答