Java 从另一个 class 方法中访问数组

Java access array from inside another class method

我需要在不使用 getter 的情况下访问位于不同 class 中的数组。我有一个扫描仪传递给一个创建数组的方法,然后调用一个方法来递归地用文件中的数据填充数组。然后我需要访问 toString 方法并使用来自 class (Student[] list).

的数组
Public class Test
{
public static void main(String[] args) throws IOException
{
 int actual = 0;
File input = new File("input.txt");
BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
Scanner scan = new Scanner(input);
C155.createList(scan);
actual = C155.getSize();
// writer.write(C155.toString(C155.list, ??????));
writer.close();
}
  }

public class C155 {
public static final int MAXSIZE = 22;
  private static int size = 0;
  public static Student[] createList(Scanner scan)
  {
    Student[] list = new Student[MAXSIZE];
    return populateList(list, scan);
  }
  private static Student[] populateList( Student[] list, Scanner scan )   
  {
    Student s;
    if ( size < MAXSIZE && scan.hasNext() )
     {
      s = new Student(scan.next(), scan.next(),scan.next(),
                      scan.nextDouble(), scan.nextInt());
       list[size] = s;
       size++;
       System.out.println(s);
       return populateList(list, scan);
     }
     else
    return list;
}
public static String toString(Student[] list, int n)
{
    String all= "All Students \n";
    for (int x = 0; x <= n; x++)
    {
        all += list[x].toString() + "\n";
    }
    return all;
}

我需要从测试中调用 toString 方法(需要 Student[] 列表)class,但我真的不知道除了创建 get 方法之外的最佳方法。

请注意,class C155 中的所有方法都是静态的,这可能不是最佳方法。

不过,为了回答您的问题,您的方法 createList(Scanner scan) 具有 return 类型的 Student[]。这就是您在 main 方法中获取对该数组的引用的地方。

Scanner scan = new Scanner(input);
Student[] studentArray = C155.createList(scan); <------
actual = C155.getSize();
writer.write(C155.toString(studentArray, studentArray.length())); <------
writer.close();

如果 return 通过方法访问列表,为什么需要访问列表?只需这样做:

Student[] list = C155.createList(scan);
writer.write(C155.toString(list, list.length()));