因此,对于我的本地数据结构,我有以下
DataStructure ds = new DataStructure();
//Examples to put in the Data Structure "ds"
ds.menu_item.put("Pizza", new DescItems("A Pizza",2.50,4));
ds.menu_item.put("Hot Dog", new DescItems("A yummy hot dog",3.50, 3));
ds.menu_item.put("Corn Dog", new DescItems("A corny dog",3.00));
ds.menu_item.put("Unknown Dish", new DescItems(3.25));
DataStructure类有一个LinkedHashMap实现,使
LinkedHashMap<String, DescItems> menu_item = new LinkedHashMap<String, DescItems>();
最后,DescItems类是
public final String itemDescription;
public final double itemPrice;
public final double itemRating;
public DescItems(String itemDescription, double itemPrice, double itemRating){
this.itemDescription = itemDescription;
this.itemPrice = itemPrice;
this.itemRating = itemRating;
}
还有其他构造函数可以说明没有itemDescription和/或itemRating
我正在尝试应用一种方法来检查一个值是否有一个非0的itemRating(0表示没有评级)
但我特别遇到了这个问题:
DescItems getC1 = (DescItems)ds.menu_item.get("Pizza");
System.out.println(getC1.toString());
仅打印出诸如DescItems @ 142D091
之类的参考信息如何获取特定的对象变量而不是引用对象?
答案 0 :(得分:1)
您可以覆盖toString()
课程中的DescItems
方法。例如:
public class DescItems {
. . .
@Override
public String toString() {
// whatever you want here
return String.format("%1$s (price: $%2$.2f; rating: %3$f)",
itemDescription, itemPrice, itemRating);
}
}
toString()
的默认实现返回一个像您所看到的对象标识字符串。
另一种方法是打印您想要的确切字段:
System.out.println(getC1.itemDescription);
答案 1 :(得分:1)
您需要覆盖toString()
DescItems
方法
这样的事情:
@Override
public String toString() {
return itemDescription + " " + itemPrice + currencySymbol + " (" + itemRating + ")";
}
答案 2 :(得分:0)
您只需要覆盖toString()方法以返回所需的文本。