通常问题是如何将ItemStacks列表传递给类的方法,所以我不必传递20个不同的ItemStack。 ItemStack在此处定义:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/ItemStack.html
那么,如何创建ItemStacks的列表或数组呢?
ItemStack stack1 = new ItemStack();
ItemStack stack2 = new ItemStack();
不起作用,但需要:
ItemStack[] stacks = new ItemStack[];
stacks = {stack1, stack2};
所以我可以:
DisplayInventory.open(stacks);
而不是:
DisplayInventory.open(stack1, stack2);
解决。
我的问题是我试图在方法之外执行任务。
public class SomeClass {
// you can instantiate here
ArrayList<ItemStack> stack = new ArrayList<>();
// but you cannot assign here
stack.add(whatever); // this produces an error
void method() {
stack.add(whatever); // this works just fine
}
}
答案 0 :(得分:0)
问题仍然不是很明确,但我相信你所寻找的是Varargs。 Varargs允许您将任意数量的相同类传递给方法,以便它们在该方法中作为数组使用。例如:
ReadOnlyCollection<IWebElement> element = driver.FindElements(By.Id("sampleId"));
if (element.Count != 0)
{
// page loaded properly
}
上述方法可以使用任意数量的字符串调用,包括零,并且增强的for循环将对传递的每个字符串执行某些操作。这些字符串可以是字符串变量,字符串文字甚至是字符串数组:
public void doSomethingMethod(String... arrayOfStrings) {
for (String string : arrayOfStrings) {
// Do something with the string
}
}
但是,它不适用于集合。它们必须转换为数组。
doSomethingMethod(); // Works, but does nothing
doSomethingMethod("John"); // Does something with John
doSomethingMethod("John", "Steve"); // Does something with John and Steve
String[] names = new String[100];
for (int i=0; i < 100; i++) {
// add names into names
}
doSomethingMethod(names); // Does something with 100 names.
&#34; ...&#34;在方法声明中doSomethingMethod(myArrayList); // Does not compile
doSomethingMethod(myArrayList.toArray(new String[0]); // Does something with every String
// in myArrayList
之后是允许您使用同一类的任意数量参数的魔力。要为您的ItemStack执行此操作,它应该类似于:
String