在google搜索之后我找不到答案,我对Java不太熟悉,我大多数时候都使用C#而且我知道使用C#可以做到,而且可能是Java.
Ps:对不起突出,我不知道如何在这里使用它.
我有一个构造函数:
public WeaponsData(ArrayList<NPC> _drop, ArrayList<NPC> _buy, ArrayList<NPC> _sell) { }
Run Code Online (Sandbox Code Playgroud)
然后,当我尝试创建直接在其上创建ArrayLists()的Object时,它不起作用:
public static WeaponsData AngelicAxe = new WeaponsData(new ArrayList<NPC>() { new NPC("Rat", "None", 0), new NPC("Dog", "None", 0) },
new ArrayList<NPC>() { new NPC("Player", "All", 0) },
new ArrayList<NPC>() { new NPC("Cain", "First", 5000) }
);
Run Code Online (Sandbox Code Playgroud)
在Java上没有办法做到这一点?
谢谢
ArrayList没有必要的构造函数.您可以在调用中包装参数Arrays.asList():
public static WeaponsData AngelicAxe = new WeaponsData(
new ArrayList<NPC>(
Arrays.asList(
new NPC("Rat", "None", 0),
new NPC("Dog", "None", 0)
)
),
// etc
);
Run Code Online (Sandbox Code Playgroud)
或使用Guava框架提供的工厂方法:
public static WeaponsData AngelicAxe = new WeaponsData(
Lists.newArrayList(
new NPC("Rat", "None", 0),
new NPC("Dog", "None", 0)
),
// etc.
);
Run Code Online (Sandbox Code Playgroud)
当然,如果你使用Guava,你应该使用一个不可变的集合,因为你显然试图实现一个常量:
public static final WeaponsData ANGELIC_AXE = new WeaponsData(
ImmutableList.of(
new NPC("Rat", "None", 0),
new NPC("Dog", "None", 0)
),
// etc.
);
Run Code Online (Sandbox Code Playgroud)