0

静的コンテキストで使用される非静的メソッドに関するこのコードのビットに対して、2 つのエラーが発生し続けます。このコードは、鳥、猫、犬のさまざまなオブジェクトの 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;

}

4

1 に答える 1

0

つまり、静的メソッドから非静的メソッドを呼び出すことはできません。

解決策: 1)「contains」メソッドを静的にすると、問題が解決します。

または 2) (クラスの名前が Pet であると仮定してから、Pet クラスのインスタンスを作成し、contains メソッドを呼び出します。4 行目は、以下のコード (C# スタイルのコード) で置き換えることができます。

Pet somePet = new Pet ();
somePet.contains(petName, petList);

-- その他の詳細: 静的メソッドは、どのオブジェクトにも固有ではないメソッドです。例 2 数の追加。Add は静的メソッドであるため、Math.Add() メソッドを呼び出すためにクラスをインスタンス化する必要はありません。

Static は、どのメソッドが呼び出されているかを確実に知っている仮想的な意味ではないメソッドであるとも言えます。

于 2012-11-03T23:07:57.500 に答える