Java 如何根据用户提供的字段创建字段?
在我的节目中; 我有一个存储姓名、描述、他/她所说的语言、创建时的地址、声誉的对象。但是必须包含的字段是名称、描述、语言,其他字段是非强制性的。我不想编写两个方法,让用户选择一个,并根据用法将其他字段设置为null,例如Java 如何根据用户提供的字段创建字段?,java,oop,design-patterns,optimization,Java,Oop,Design Patterns,Optimization,在我的节目中; 我有一个存储姓名、描述、他/她所说的语言、创建时的地址、声誉的对象。但是必须包含的字段是名称、描述、语言,其他字段是非强制性的。我不想编写两个方法,让用户选择一个,并根据用法将其他字段设置为null,例如 inside of constructor(name, description, languages) { this.name = name; this.description = description; this.languages = langua
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
提前感谢。要有不同的字段集,您需要不同的类。如果您希望使用工厂或构建器来实现这一点,您可以为每个组合生成一个类(我以前做过,这并不简单;),但我会创建一个包含所有可能字段的类并使用它。Java中没有参数的“默认值”,因此您必须提供两个构造函数(不过,一方可以打电话给另一方)
如果您的字段是动态的,那么使用映射作为单个参数如何?这通常不是一个很好的模式,但它可以适合您的用例。更好的选择是为变量提供getter setter方法,以便用户只能调用那些为必填字段设置值的方法。因此,请尝试创建Bean类ma映射到表单,并将字段映射到变量。您可以创建具有可变参数数的构造函数:
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");
}
}
但是我可能会使用一个带有命名键的映射作为构造函数的参数(正如上面mauhiz所建议的)ch解释了构建器模式 ~HTH
PS:无法对您的问题发表评论。因此作为答案发布。您不需要两个构造函数有什么特别的原因吗?@Fildor第一个原因是我不想创建冗余字段并将其设为null。另一个原因是我认为这些类型的代码不太好,因为可选字段通常不用于是吗?无意冒犯,但我觉得这有点过分了。也许是个人品味的问题。不过有一个提示:你考虑过装饰图案吗?