如何在 Java 中打印此对象?

How to print this object in Java?

我是 java 的新人,昨天我的教授给我发了一份样本测试。不幸的是我被困在一个任务中。

任务:

编写一个名为 MyArray 的 class,其中包含所有必要的方法。在 class 实例化之后,我们想在 Main.java 中使用这个 class 像这样:

// comments : expected outputs

System.out.println(myarray1); // []
System.out.println(myarray1.size()); // 0
System.out.println(myarray1.isEmpty()); // true
myarray1.append(51);
myarray1.append(75);
myarray1.append(24);
System.out.println(myarray1); // [51, 75, 24]
System.out.println(myarray1.size()); // 3
int last = myarray1.getLast();
System.out.println(last); // 24
int first = myarray1.getFirst();
System.out.println(first); // 51
myarray1.appendAll(List.of(15, 95, 124));
System.out.println(myarray1); // [51, 75, 24, 15, 95, 124]
System.out.println(MyArray.InstCount); // 1 <instantiation counter>

我已经成功实现了所有必要的方法,但我无法理解这一行:

System.out.println(myarray1); // []

如何直接打印这个对象 (ArrayList)?

我做不到。我的解决方法是一种名为 print() 的新方法,它打印 myarray1 对象:

在Main.java中:

System.out.println(myarray1.print()); // []

在MyArray.java中:

import java.util.List;
import java.util.ArrayList;

class MyArray
{
    public static int Count = 0;
    private List<Integer> numbers = new ArrayList<Integer>();

    MyArray()
    {
        Count++;
    }

    public List<Integer> print()
    {
        return numbers;
    }

  .
  . // other methods...
  .

}

print() 如果该方法实际上不打印任何内容而是构造一个字符串,则这个名称有点奇怪。

println(Object obj) 方法存在于 PrintStream 中(并且 System.out 是一个 PrintStream)。它通过调用它们的 toString() 方法(所有对象都有 - 你可以覆盖它)来打印对象:

public class MyArr {
    @Override public String toString() {
       return whatever your print() method was returning.
    }
}

看来您需要重写 toString 方法。像这样

class MyArray {

    // other fields

    @Override
    public String toString() {
        return numbers.toString();
    }
}