2

私のプログラムでは; 私は、名前、説明、彼/彼女が話す言語、作成されたとき、住所、評判を保存するオブジェクトを持っています。ただし、必須フィールドは名前、説明、言語であり、その他のフィールドは必須ではありません。2つのメソッドを記述して、ユーザーが1つを選択し、使用法に応じて他のフィールドをnullにするようにしたくありません。

inside of constructor(name, description, languages) {
    this.name = name;
    this.description = description;
    this.languages = languages;
    this.address = " ";
    this.reputation = " ";
}

inside of constructor(name, description, languages, address, reputation) {
    this.name = name;
    this.description = description;
    this.languages = languages;
    this.address = address;
    this.reputation = reputation;
}

では、どうすればこの問題を解決できますか?ユーザーが提供するフィールドに従ってフィールドを作成する方法はありますか?

私はJavaを使用しています。

前もって感謝します。

4

6 に答える 6

1

より良いオプションは、変数にgetter setterメソッドを提供することです。これにより、ユーザーは必須フィールドの値を設定するメソッドのみを呼び出すことができます。したがって、フィールドを変数にマッピングして、フォームにマッピングするBeanクラスを作成してみてください。

于 2012-09-21T07:51:14.493 に答える
1

Builderパターンを説明する次のURLを見てください。

https://stackoverflow.com/a/1953567/705315

〜HTH

PS:あなたの質問にコメントすることはできません。したがって、回答として投稿します。

于 2012-09-21T08:39:04.887 に答える
0

別のフィールドのセットを使用するには、別のクラスが必要です。ファクトリまたはビルダーを使用してこれを実行したい場合は、すべての組み合わせに対してクラスを生成できます(これは以前に実行したことがあり、単純ではありません;)が、すべての可能なフィールドを持つ1つのクラスを作成し、それを使用します。

于 2012-09-21T07:45:03.560 に答える
0

Javaにはパラメーターの「デフォルト値」がないため、2つのコンストラクターを提供する必要があります(一方はもう一方を呼び出すことができます)。

フィールドが非常に動的である場合、Map <String、String>を単一のパラメーターとして使用するのはどうでしょうか。これは通常、きれいなパターンではありませんが、ユースケースに合う可能性があります。

于 2012-09-21T07:46:14.230 に答える
0

可変数の引数を使用してコンストラクターを作成できます。

public class VarArg {
    public VarArg(String ... args)
    {
        String a = args[0];
        String b = args[1];
    }

    public static void main(String[] args)
    {
        VarArg arg1 = new VarArg("hello");
        VarArg arg2 = new VarArg("hello","goodbye");
    }
}

しかし、私はおそらく、コンストラクターへのパラメーターとして名前付きキーを持つMapを使用します(上記のmauhizによって提案されたように)。

于 2012-09-21T07:55:36.417 に答える
0

JavaコンパイラAPIを使用すると、別のJavaプログラムで実行時に指定できるソースコードを使用してJavaコンパイラを呼び出すことができます。おそらくあなたが探しているものではありませんが、ユーザーが実行時に指定したフィールドを使用してクラスを作成し、質問に答えることは可能です。必要に応じて例を示します。

于 2012-09-21T07:56:57.227 に答える