打印内存地址而不是字符串值

时间:2015-07-09 21:52:45

标签: java processing

我添加到我的ArrayList" activList"元素使用:

activList.add(new Fiducial("R600" ));

我用以下方式打印:

System.out.println(activList);

以下是代码:

// Grid variables
int cols = 10, rows = 10;
int rectangleWidth = 100;
int rectangleHeight = 60;

// these are some helper variables which are used
// to create scalable graphical feedback
int k, l, iD;
float cursor_size = 15;
float object_size = 60;
float table_size = 760;
float scale_factor = 1;
float x, y;


ArrayList<Fiducial> activList = new ArrayList<Fiducial>();

public class Fiducial {

  public String type;

  public Fiducial(String type) {

    this.type = type;
  }

}

void draw() {
  // Begin loop for columns
  for ( k = 0; k < cols; k++) {
    // Begin loop for rows
    for ( l = 0; l < rows; l++) {
      fill(255);
      stroke(0);
      rect(k*rectangleWidth, l*rectangleHeight, rectangleWidth, rectangleHeight);
    }
  }




  // This part detects the fiducial markers 
  float obj_size = object_size*scale_factor; 
  float cur_size = cursor_size*scale_factor; 

  ArrayList<TuioObject> tuioObjectList = tuioClient.getTuioObjectList();
  for (int i=0; i<tuioObjectList.size (); i++) {
    TuioObject tobj= tuioObjectList.get(i);
    stroke(0);
    fill(0, 0, 0);
    pushMatrix();
    translate(tobj.getScreenX(width), tobj.getScreenY(height));
    rotate(tobj.getAngle());
    rect(-80, -40, 80, 40);
    popMatrix();
    fill(255);
    x = round(10*tobj.getX ());
    y = round(10*tobj.getY ());
    iD = tobj.getSymbolID();
    activList.add(new Fiducial("R600" ));
    fiducialVisibles ();

  }

}


void fiducialVisibles () {
System.out.println(activList);
}

然而,它返回类似[FiducialDetection $ Fiducial @ 47baec4c]的内容,这似乎是地址。如何检索字符串的实际值?

2 个答案:

答案 0 :(得分:2)

在您的Fiducial类上实现toString()。

答案 1 :(得分:1)

public class Fiducial { 

    @Override
    public String toString() {
        String yourResult = this.type; // + ...
        return yourResult;
    }

}

您必须在班级中覆盖toString()方法。