如何覆盖 toString 并打印出自定义 class 类型的 ArrayList
How to override toString and print out custom class type of ArrayList
我能找到的最接近的是这个线程:
但是,当我尝试覆盖输出时,它给我错误:类型数组中的方法 toString(long[]) 不适用于参数 (List)
//更新:
原来我在System.out.println里不需要Arrays.toString。因此,让我将我的问题更改为:为什么我仍然需要在间隔 class 中进行此覆盖?我注意到如果没有它,我会得到这样的输出:
[Interval@6d06d69c, Interval@7852e922, Interval@4e25154f, Interval@70dea4e]
这是我的代码:
public static void main (String [] args) {
List<Interval> intervals = new ArrayList<Interval>();
intervals.add(new Interval(1,3));
intervals.add(new Interval(2,6));
intervals.add(new Interval(8,10));
intervals.add(new Interval(15,18));
System.out.println(Arrays.toString(intervals));
}
这是我的区间class:
public class Interval {
int start;
int end;
Interval() {start = 0; end = 0;}
Interval(int s, int e) {
start = s;
end = e;
}
@Override
public String toString() {
return "[ " + start + ", " + end + "] ";
}
}
问题是 Arrays.toString(...) 需要一个数组作为输入,而不是列表。
我能找到的最接近的是这个线程:
但是,当我尝试覆盖输出时,它给我错误:类型数组中的方法 toString(long[]) 不适用于参数 (List)
//更新: 原来我在System.out.println里不需要Arrays.toString。因此,让我将我的问题更改为:为什么我仍然需要在间隔 class 中进行此覆盖?我注意到如果没有它,我会得到这样的输出:
[Interval@6d06d69c, Interval@7852e922, Interval@4e25154f, Interval@70dea4e]
这是我的代码:
public static void main (String [] args) {
List<Interval> intervals = new ArrayList<Interval>();
intervals.add(new Interval(1,3));
intervals.add(new Interval(2,6));
intervals.add(new Interval(8,10));
intervals.add(new Interval(15,18));
System.out.println(Arrays.toString(intervals));
}
这是我的区间class:
public class Interval {
int start;
int end;
Interval() {start = 0; end = 0;}
Interval(int s, int e) {
start = s;
end = e;
}
@Override
public String toString() {
return "[ " + start + ", " + end + "] ";
}
}
问题是 Arrays.toString(...) 需要一个数组作为输入,而不是列表。