我正在为我正在制作的模拟器游戏制作一个manaCount对象。
构造函数如下所示:
public ManaCount(int red, int white, int blue, int green, int black, int colorless){
redManaCount = red;
whiteManaCount = white;
blueManaCount = blue;
greenManaCount = green;
blackManaCount = black;
colorlessManaCount = colorless;
}
我没有看到在构造函数中使用这么多参数的任何方法,但是我希望有一种方法可以使manaCount对象的实例化比以下更具描述性:
ManaCount test = new ManaCount(0,0,0,0,0,0);
目前看来,如果没有看到实施,就不可能知道哪种颜色在哪种论证中。有没有任何形式的java巫术可以实现这一目标?
答案 0 :(得分:2)
我建议你使用龙目岛。这是您使用@Builder的方式。
//ManaCount.Java
import lombok.Builder;
import lombok.ToString;
@Builder
@ToString
public class ManaCount {
private final int redManaCount;
private final int whiteManaCount;
private final int blueManaCount;
private final int greenManaCount;
private final int blackManaCount;
private final int colorlessManaCount;
}
Ussage:
// ManaMain.java
public class ManaMain {
public static void main(String[] args) {
ManaCount manaCount = ManaCount.builder()
.redManaCount(0)
.whiteManaCount(0)
.blueManaCount(0)
.greenManaCount(0)
.blackManaCount(0)
.build();
System.out.println(manaCount);
}
}
输出:
ManaCount(redManaCount=0, whiteManaCount=0, blueManaCount=0, greenManaCount=0, blackManaCount=0, colorlessManaCount=0)
答案 1 :(得分:1)
也许这听起来非常简单,但是一旦你想让用户明确地设置你的类组件的名称,那么使用无参数构造函数然后使用一些setter应该是个好主意:
c = new ManaCount();
c.setRed(red);
c.setGreen(green);
如果您仍希望通过构造函数实现此类机制,则可能需要使用类中定义的某些常量来标识组件。如果构造函数将组件id的数组作为其第一个参数并将组件ID的数组作为其第二个参数,则调用可能看起来像
c = new ManaCount(new int[]{ManaCount.RED,ManaCount.GREEN}, new int[]{red, green});
当然,您可以实现另一种语法变体来调用具有用户定义的 id->值映射列表的构造函数,可能采用一组名称 - 值对,或/和java.util.Map
接口初始化等。