因此,我已经创建了一个通用类,我需要将其打印出来以查看是否传递了正确的值。只有当我打印时,我才会得到
PointList@7852e922
我不知道如何打印出实际值。我读过的所有内容仅对ArrayLists有帮助,而对通用类没有帮助。我尝试使用stringbuilder,并尝试在PointList类中编写toString方法,但不断出错。我使用这两种方法之一在正确的轨道上吗?有办法打印出来吗?
public class PointListTest{
public static void main(String[] args){
//create point ints
Point<Integer> pointOne = new Point<Integer>(1,2);
Point<Integer> pointTwo = new Point<Integer>(3,4);
Point<Integer> pointThree = new Point<Integer>(5,6);
//make object PointList pointlist for int
PointList<Point<Integer>> newPointList = new PointList<Point<Integer>>();
//add points to list
newPointList.add(pointOne);
newPointList.add(pointTwo);
newPointList.add(pointThree);
//print list
System.out.println(newPointList);
这是PointList类
public class PointList<E>{
private List<E> myList;
E data;
public PointList(E obj){
myList = new ArrayList<>();
data = obj;
}//end constructor
public PointList(){
myList = new ArrayList<>();
}//end no args constructor
public void add(E obj) {
myList.add(obj);
}
这就是我的toString方法中的东西。
@Override
public String toString(){
return("" + data);
}//end toString
Point类具有此toString方法
@Override
public String toString(){
return (xCordinate + "," + yCordinate);
}//end toString
答案 0 :(得分:2)
尝试在类toString
中定义自定义PointList
方法,假设Point
定义了自己的toString
,则下面的代码应该起作用
@Override
public String toString(){
String str = this.myList != null ? this.myList.stream().map(Object::toString).collect(Collectors.joining(", ")) : "";
return str;
}
答案 1 :(得分:0)
直接打印类时,Java实际上会调用该类的toString()
方法。默认情况下会打印一些非常无用的信息(这就是您在PointList@7852e922
中看到的信息。
如果您希望班级打印出更有意义的信息,则需要重写toString()
方法并提供自己的方法:
@Override
public String toString() {
return "Name = " + name;
}
很显然,您将调整返回值以适合自己的需求。