对于静态上下文中使用的非静态方法的这段代码,我一直有两个错误。此代码使用不同鸟类,猫和狗对象的ArrayList,并使用名为Pet的接口将它们放入名为petList的ArrayList中。 我在第4和第6行得到了同样的错误。
public static void Feed(ArrayList petList){
Scanner input = new Scanner(System.in);
String petName = input.next();
contains(petName, petList);
if(ifThere == true){
String feed = Pet.feed();
System.out.println(petName + feed);
}
else{
System.out.println("Unknown pet");
}
}
public boolean contains (String petName, ArrayList petList){
boolean ifThere = false;
int sizeList = petList.size() -1;
for(int i=0; sizeList > i; i++){
Pet booleanPet = petList.get(i);
String booleanName = booleanPet.getName();
if (booleanName.equals(petName)){
ifThere = true;
}
}
return ifThere;
}
答案 0 :(得分:0)
简而言之:您无法通过静态方法调用非静态方法。
解决方案: 1)将“包含”方法设为静态,它将解决问题。
OR 2)(假设类的名称是Pet然后创建Pet类的实例并调用contains方法: 您的第4行可以替换为下面的代码(C#样式代码):
Pet somePet = new Pet ();
somePet.contains(petName, petList);
- 额外细节: 静态方法是一种从不特定于任何对象的方法。例如添加2个号码。您 不需要实例化任何类来调用Math.Add()方法,因为Add是静态方法。
你也可以说静态是一种你绝对不知道的虚拟意义的方法 正在调用哪种方法。