如何输出存储在java矢量中的对象的属性?

时间:2012-10-10 09:59:52

标签: java vector

我创建了一些自定义类的对象,并为它们分配了不同的属性。然后我将每个对象添加到向量中,但是当我尝试输出向量的元素时,我得到的只是对象的引用,而不是对象属性。

5 个答案:

答案 0 :(得分:3)

当您调用System.out.println()(或类似方法)并向其传递对类实例的引用时,将对该类的toString()方法进行隐式调用。您所看到的是从toString()类继承的Object的默认实现。

如果您想更改输出,只需在您的班级中提供您自己的toString()实施,即可返回您想要的信息。

答案 1 :(得分:2)

您可以使用enhanced for loop

访问它们
Vector<YourObject> vector = ...;

for(YourObject obj : vector)
{
    System.out.println(obj.YOUR_METHOD_OR_ATTRIBUTE);
}

或者使用elementAt(position)

System.out.println(vector.elementAt(position).YOUR_METHOD_OR_ATTRIBUTE);

或者最后,覆盖toString()方法并使用:

System.out.println(vector.elementAt(position));

答案 2 :(得分:1)

当你打印任何类的实例时,调用Object类的toString()方法。

您需要在自定义类中覆盖toString方法,然后打印所需的属性。然后将调用toString()方法而不是Object's toString ..

或者,您可以使用getter方法,并在

的每个实例上调用该方法
public class Custom {
    private String attr;

    public String getAttr() {
         return this.attr;
    }

    @Override
    public String toString() {
         return attr;
    }
}

然后,当您打印实例时,将调用toString(),并打印attr值。

Vector<Custom> yourVector = ...;

for (Custom val: yourVector) {
    System.out.println(val);  // Will invoke `toString()` and print attr value.
    System.out.println(val.getAttr());  // Prints attr value
}

答案 3 :(得分:1)

在Vector上使用泛型非常重要。如果不这样做,除非进行转换,否则将获得java.lang.Object类型的对象。

所以这样定义:

Vector<MyObject> vector = new Vector<MyObject>();

而不是

Vector vector = new Vector();

答案 4 :(得分:0)

如果您使用的是System.out.println(v),其中v是您的Vector元素,那么您需要实现自定义对象的toString()方法。这样,您将覆盖现在获得的默认Object#toString()行为。