打印通用类列表

时间:2019-02-19 05:13:24

标签: java generics

因此,我已经创建了一个通用类,我需要将其打印出来以查看是否传递了正确的值。只有当我打印时,我才会得到

 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

2 个答案:

答案 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;
}

很显然,您将调整返回值以适合自己的需求。