导师问我们
如何创建一个名为 addAlien
的新方法,该方法采用 String
参数来指定外星人的名称,并在方法内创建一个新的 Alien 对象,然后将其添加到ArrayList
中。
我刚刚写道:
public void addAlien(String name)
{
Alien name = new Alien()
}
我希望您正在寻找:
ArrayList<Alien> list = new ArrayList<>();
public void addAlien(String name) {
list.add(new Alien(name));
}
在 addAlien 方法中,输入参数绑定到标识符"name",如您所声明的:
public void addAlien(String name) ...
因此,当用户将字符串传递给方法时,字符串可以通过标识符"name"引用并进一步用于其他目的。但紧接着,你使用相同的标识符(即"名称")创建了一个 Alien 类型的变量。在研究进一步发展之前,应该消除这种混乱。
所以而不是
Alien name = new Alien()
你应该做
Alien newlyCreatedAlien = new Alien()
请注意,编译您编写的代码在语法上是合法的,这是一个称为"阴影"的概念。如果您在理解或查找相关材料时遇到困难,请告诉我。
最后,方法用户给出的字符串(现在存储并由标识符"name"引用)应该正确使用!在这种情况下,我们正在创建(构建)一个新的外星人对象。通常,我们调用类的所谓"构造函数"。
new Alien(someParameterPassedToTheConstructor)
因此,存储在"名称"中的信息应通过构造函数的参数传递以创建特定的外星人。
new Alien(name)
将是满足需求的微不足道的解决方案。
请注意,在 DhiwaTdG 提供的解决方案中,新创建的 Alien 不使用任何标识符进行存储(它是创建的,然后直接添加到列表中)。这是完全可以的,因为此方法不需要对这个特定的外星人执行进一步的操作,然后将其添加到列表中。这是我们追求的列表,而不是外星人(至少在这种方法中)。
希望这能帮助您消除一些困惑。
这应该很有帮助。
List<Alien> list = new ArrayList<>();
public void addAlien(String name) {
list.add(new Alien(name));
}
class Alien{
String name;
public Alien(String name){
this.name = name
}
}