既然学校已经重新开学,我正试图重新开始使用 Java,但我在找到一个在两个类(class)之间正常工作的方法时遇到了很多麻烦。
我有一个“家庭”类和一个“成员”类,我需要确保每个成员在添加到家庭时都有不同的唯一 ID。到目前为止我已经:
public class Family
{
private ArrayList <Member> FamilyMembers;
...
public Family()
{
FamilyMembers = new ArrayList<Member>();
}
....
public ArrayList getMembers()
{
return FamilyMembers;
}
}
和
public class Member
{
private int ID;
...
public Member(int newID, String newMemberName, String newSex)
{
this.ID = newID;
...
}
public void setID(int newID)
{
boolean unique = true;
for(Member m: Family.getMembers())
{
if(m.getID()==newID)
{
unique=false;
}
}
if(true)
{
this.ID = newID;
}
}
编译时出现错误,无法从静态上下文引用非静态方法 getMembers?我不明白为什么在设置 ID 之前不能使用 Family 类中的 get 方法执行搜索?非常感谢任何帮助或建议!
最佳答案
事实上该方法:
public ArrayList getMembers()
{
return FamilyMembers;
}
不是静态的,意味着您需要创建 Family 类的对象来调用上述方法。您可以执行以下两件事之一。
添加单词 static,如下所示:
公共(public)静态ArrayList getMembers()。
或者您可以按如下方式创建该类的对象。 插入此代码。
家庭ob = new Family();
ob 是对象。现在您可以使用它来调用该方法,如下所示:
ob.getMembers();
在您的代码中,它将如下所示:
for(Member m: ob.getMembers())
关于java - BlueJ 中的数组列表搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25746905/