Java 怎么在类中调用主类中的集合

在主类中创建的集合,怎么才能在同一个包下的其他类中调用其get方法呢,实在是搞不懂了,为什么在同一个包下却不能调用阿。


package ktodoss;

public class Dog{
    int number;
    String name;
    int price;
    public Dog(int number,String name,int price){
        this.number = number;
        this.name = name;
        this.price = price;
    }
    public void setNumber(int number){this.number = number;}
    public int getNumber(){return number;}
    public void setName(String name){this.name = name;}
    public String getName(){return name;}
    public void setPrice(int price){this.price = price;}
    public int getPrice(){return price;}
    public void findDog(int ob) {
        for(int i=0;i<3;) {
            if(listDog.get(i).number != ob) {
                i++;
            }
        else {
                    System.out.print("编号对应的狗的为");
                    System.out.println(listDog.get(i));
                    System.out.print("狗的编号为");
                    System.out.println(listDog.get(i).number);
                    System.out.print("狗的名字为");
                    System.out.println(listDog.get(i).name);
                    System.out.print("狗的价格为");
                    System.out.println(listDog.get(i).price);
                    break;
                }
        }
    }
}
package ktodoss;

import java.util.*;
import java.util.Scanner;

public class DogManage{
    public static void main(String[] ages){
        int max=0;
        List<Dog> listDog = new ArrayList<Dog>();
        Dog Dog1 = new Dog(1,"1",11);
        Dog Dog2 = new Dog(2,"2",22);
        Dog Dog3 = new Dog(3,"3",33);
        listDog.add(Dog1);
        listDog.add(Dog2);
        listDog.add(Dog3);
        max += (listDog.get(0).price+listDog.get(1).price+listDog.get(2).price);
        System.out.println("所有狗的价格总和为"+max);
        Scanner in = new Scanner(System.in);
        int b = in.nextInt();
        Dog1.findDog(b);
    }
}

为什么会显示错误呢,求指正,如图:

img

findDog 方法中将 这个listDog作为入参就行了

public void findDog(int ob, List<Dog> listDog){
}

listDog 是定义在主函数里的局部变量啊。解决的方法是,把 listDog 设置为 DogManage 的公共静态变量:

package ktodoss;
 
import java.util.*;
import java.util.Scanner;
 
public class DogManage{
    public static List<Dog> listDog = new ArrayList<Dog>();
    public static void main(String[] ages){
        int max=0;
        Dog Dog1 = new Dog(1,"1",11);
        Dog Dog2 = new Dog(2,"2",22);
        Dog Dog3 = new Dog(3,"3",33);
        listDog.add(Dog1);
        listDog.add(Dog2);
        listDog.add(Dog3);
        max += (listDog.get(0).price+listDog.get(1).price+listDog.get(2).price);
        System.out.println("所有狗的价格总和为"+max);
        Scanner in = new Scanner(System.in);
        int b = in.nextInt();
        Dog1.findDog(b);
    }
}

然后在 Dog.java 中,把 listDog 改为 DogManage.listDog 就行了