Java - 从另一个 class 更改数组列表
Java - changing an arraylist from another class
因此,我制作了一个 public 数组列表,我需要从另一个 class 进行更改。 shielded 是一个数组列表,它将 UUID 存储为每个已打开盾牌的玩家的字符串。此代码不会影响 class 中的数组,但仍然允许我在 class.
中切换它
在Class3中访问后,使用if (vars.shielded.contains(otherPlayer.getUniqueId().toString())) {
,总是returnsfalse,数组中没有播放器UUID。
Class一个:
public class ClassOne {
public ArrayList<String> shielded = new ArrayList<String>();
public void addItem(String item) {
this.shielded.add(item);
}
public void removeItem(String item) {
this.shielded.remove(item);
}
}
Class 两个(片段):
ClassOne vars = new ClassOne();
...
if(vars.global.shielded.contains(p.getUniqueId().toString())) {
vars.removeItem(p.getUniqueId().toString());
p.sendMessage("You are NOT in the list");
}
else {
vars.addItem(p.getUniqueId().toString());
p.sendMessage("You're in the list.");
}
对我来说,您正在为每个方法调用创建 ClassOne
的新实例。
您可以创建一个实例并将其放在静态字段中。如果您在多个 class 中使用此实例,这是一个好方法。为此,只需使用 public static ClassOne vars = new ClassOne();
.
此外,如果您只使用一个 class(或需要不同 class 的多个实例),我建议您这样做:
public ClassOne vars; // declare variable
public ClassTwo() {
vars = new ClassOne(); // create a new instance
}
public void yourMethod() {
if(vars.contains(myUUID)) {
// should contains
} else {
// should not contains
}
}
将 ClassOne 中的 ArrayList 设为静态。
“vars.global.shielded.contains...”中的“全局”是否正确?
if(vars.global.shielded.contains(p.getUniqueId().toString())) {
vars.removeItem(p.getUniqueId().toString());
p.sendMessage("You are NOT in the list");
}
也许您应该将其替换为以下代码片段。
if(vars.shielded.contains(p.getUniqueId().toString())) {
vars.removeItem(p.getUniqueId().toString());
p.sendMessage("You are NOT in the list");
}
因此,我制作了一个 public 数组列表,我需要从另一个 class 进行更改。 shielded 是一个数组列表,它将 UUID 存储为每个已打开盾牌的玩家的字符串。此代码不会影响 class 中的数组,但仍然允许我在 class.
中切换它在Class3中访问后,使用if (vars.shielded.contains(otherPlayer.getUniqueId().toString())) {
,总是returnsfalse,数组中没有播放器UUID。
Class一个:
public class ClassOne {
public ArrayList<String> shielded = new ArrayList<String>();
public void addItem(String item) {
this.shielded.add(item);
}
public void removeItem(String item) {
this.shielded.remove(item);
}
}
Class 两个(片段):
ClassOne vars = new ClassOne();
...
if(vars.global.shielded.contains(p.getUniqueId().toString())) {
vars.removeItem(p.getUniqueId().toString());
p.sendMessage("You are NOT in the list");
}
else {
vars.addItem(p.getUniqueId().toString());
p.sendMessage("You're in the list.");
}
对我来说,您正在为每个方法调用创建 ClassOne
的新实例。
您可以创建一个实例并将其放在静态字段中。如果您在多个 class 中使用此实例,这是一个好方法。为此,只需使用 public static ClassOne vars = new ClassOne();
.
此外,如果您只使用一个 class(或需要不同 class 的多个实例),我建议您这样做:
public ClassOne vars; // declare variable
public ClassTwo() {
vars = new ClassOne(); // create a new instance
}
public void yourMethod() {
if(vars.contains(myUUID)) {
// should contains
} else {
// should not contains
}
}
将 ClassOne 中的 ArrayList 设为静态。
“vars.global.shielded.contains...”中的“全局”是否正确?
if(vars.global.shielded.contains(p.getUniqueId().toString())) {
vars.removeItem(p.getUniqueId().toString());
p.sendMessage("You are NOT in the list");
}
也许您应该将其替换为以下代码片段。
if(vars.shielded.contains(p.getUniqueId().toString())) {
vars.removeItem(p.getUniqueId().toString());
p.sendMessage("You are NOT in the list");
}