如何根据用户提供的字段创建字段?

时间:2012-09-21 07:40:23

标签: java oop design-patterns optimization

在我的课程中; 我有一个对象,存储他/她说话的名称,描述,语言,创建时,地址,声誉。但必须有字段是名称,描述,语言,其他字段是非强制性的。我不想写两个方法,让用户根据用途选择一个并使其他字段为空,例如;

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。

提前致谢。

6 个答案:

答案 0 :(得分:1)

更好的选择是为变量提供getter setter方法,以便用户只能调用那些为必填字段设置值的方法。因此,尝试创建一个Bean类映射到表单,并将字段映射到变量。

答案 1 :(得分:1)

查看以下解释Builder Pattern的网址。

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

〜HTH

PS:无法对您的问题发表评论。因此张贴为答案。

答案 2 :(得分:0)

要拥有一组不同的字段,您需要一个不同的类。如果您希望使用工厂或构建器来执行此操作,您可以为每个组合生成一个类(我之前已经完成了这个并且它不简单;)但是我会创建一个具有所有可能字段并使用它的类。

答案 3 :(得分:0)

Java中的参数没有“默认值”,因此您必须提供2个构造函数(一个可以调用另一个)。

如果您的字段非常动态,那么使用Map< String,String>作为一个参数?这通常不是一个漂亮的模式,但它可以适合您的用例。

答案 4 :(得分: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所示)。

答案 5 :(得分:0)

java compiler API允许您使用可在运行时在另一个Java程序中指定的源代码调用Java编译器。可能不是您正在寻找的,但可以创建一个类,其中包含用户在运行时指定的字段来回答您的问题。如果你愿意,我可以提供一个例子。