0

したがって、投稿するこれらの 2 つのファイルは、それぞれデータベース パッケージに含まれています。DBBinding クラスは、キー用の文字列と値用の文字列を持つオブジェクトを作成するだけです。次に、DBrecord は、すべて同じキー文字列を持つが異なる値文字列を持つ DBBinding のコレクションを保持します。何らかの理由で、DBBinding クラス/オブジェクト コンストラクターを呼び出すように DBrecord で add メソッドを作成する正しい方法を考えたり見つけたりすることができません。

これは、バインディングを追加することになっているメソッドです。

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コンストラクターから構成を削除してください。

シグネチャの違い コンストラクターとメソッドは、シグネチャの 3 つの側面 (修飾子、戻り値の型、および名前) で異なります。メソッドと同様に、コンストラクターは、public、protected、private、または none (パッケージまたはフレンドリーと呼ばれることが多い) のいずれかのアクセス修飾子を持つことができます。メソッドとは異なり、コンストラクターはアクセス修飾子のみを受け取ることができます。したがって、コンストラクターを抽象、最終、ネイティブ、静的、または同期化することはできません。

戻り値の型も大きく異なります。メソッドは、有効な戻り値の型を持つことも、戻り値の型を持たないこともできます。その場合、戻り値の型は void として指定されます。コンストラクターには戻り値の型がなく、void さえありません。

于 2012-03-24T17:58:03.040 に答える