![](/img/trans.png)
[英]if a class in its constructor contains an int,, and an array.. how can i use the array in another class.?
[英]How can I make a constructor that contains a number of the same objects but if one its empty to ignore it?
我想为包含四个填充的包装创建一个构造函数,但是如果一个填充为空(例如只使用2或3而不是4)来执行代码而没有任何问题。
我目前只能使用此代码只包含一个填充。
Wrap one=new Wrap( new Bread("Italian"), new Filling("Ham"),new Topping("Cheddar"));
使用当前的构造函数,您只能有零( null
)或一个面包,填充和顶部。
您需要重载构造函数以允许更多输入选项。
如果您想要多个填充并且最多只有一个顶部,请添加此构造函数
Wrap(Bread b, List<Filling> fillings, Topping topping)
如果你想要有多个填充和浇头,那么这个
Wrap(Bread b, List<Filling> fillings, List<Topping> toppings)
或者只允许最后一种情况,并使用Collections.singletonList()
来获取一个项目的列表。
你可以使用this()
组合它们。
总结一下,这就是一个例子
Bread bread;
List<Filling> fillings;
List<Topping> toppings;
public Wrap(Bread b, List<Filling> fillings, List<Topping> toppings) {
// ...
}
public Wrap(Bread b, Filling f, Topping t) {
this(b, Collections.singletonList(f), Collections.singletonList(t));
}
public Wrap(Bread b, List<Topping> toppings) {
// Is this a pizza?
this(b, null, toppings);
}
我建议使用一个构造函数来获取填充列表,这样你就可以拥有一个构造函数,并强制调用者提供列表,即使它是空的。 这将允许任何数量的填充。
如果4是最大值,则调用者可以为每个未使用的参数传入null
。
如果填充具有公共基类,则列表可以将基类作为其类型。 (或者,对象,如果你必须走得那么远,虽然这似乎不是一个好主意。)另一种方法是使用Varargs与基类。
凌乱的方法是生成一堆构造函数,提供所有参数组合,但如果你有这么多的参数,它就会有一个糟糕的“代码味道”。
正确的答案取决于您尝试提供的界面以及您希望如何使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.