假设我有我自己定义的数据类型:
public class InformationType
{
private String brand;
private int number;
private double power;
public PurchaseInfo(String brand, int number, double power)
{
this.brand = brand;
this.number = number;
this.power = power;
}
public String getBrand()
{
return this.brand;
}
public int getNumber()
{
return this.number;
}
public double getPower()
{
return this.power;
}
}
然后我有一个打印字符串的程序,它只是一个字符串,一个int或一个double,我将它们全部添加到一个与我创建的类型相同的数组中:
theInfo.add(new InformationType(theBrand, theNumber, thePower))
当我做一个循环,只是检查我是否正确我只是得到指针(我认为它被调用)给他们而不是真正的字符串/ int / double。我想打印所有类型,而不使用我的getter。这就是我所做的:
for (InformationType x : theInfo)
{
System.out.println(x);
}
我收到的信息如InformationType @ abcd12412413等。
是的,我用以下信息制作了信息:
ArrayList<InformationType> theInfo = new ArrayList<>();
感谢。
答案 0 :(得分:2)
您应该覆盖InformationType
中的toString()
。
重写的方法应反映出您希望将InformationType
的实例表示为String
的方式。
答案 1 :(得分:2)
您需要覆盖toString
。 e.g:
public class InformationType {
...
@Override
public String toString() {
return "{" + brand + "," + number + "," + power + "}";
}
}
现在,println
会自动调用它。
答案 2 :(得分:0)
您需要覆盖toString()
课程中的InformationType
方法。编写它以便它以您想要的格式返回数据的String。也许是这样的:
public String toString() {
return String.format("%s %d %f", brand, number, power);
}
所有对象都有toString()
方法,但默认实现是以十六进制格式打印类型名称,“@”符号和对象的哈希码。当您覆盖toString()
时,您可以返回任何您喜欢的内容。唯一的限制是您不应该真正返回null
。