如何将toString方法的值从子类中获取到另一个类中,并通过for循环对它们进行迭代,将值添加到一个字符串中



所以我有4个子类,它们用toString((方法扩展了DessertItem类:

//candy
public String toString() {
String line1 = String.format("%-25s$%",super.getName());
String line2Pt1 = String.format("%-16.2flbs%@-8.2/f.:%", candyWeight, pricePerPound);
String line2Pt2 = String.format("%-6f", calculateCost());
String line2Pt3 = String.format("[Tax: $%.-4f]", super.calculateTax());
String outputVar = String.format("%snt%-45s%s%17s", line1, line2Pt1, line2Pt2, line2Pt3);
return outputVar;
}
//cookie
public String toString() {
String line1 = String.format("%-25s$%",super.getName());
String line2Pt1 = String.format("%-16.2flbs%@-8.2/f.:%", cookieQty, pricePerDozen);
String line2Pt2 = String.format("%-6f", calculateCost());
String line2Pt3 = String.format("[Tax: $%.-4f]", super.calculateTax());
String outputVar = String.format("%snt%-45s%s%17s", line1, line2Pt1, line2Pt2, line2Pt3);
return outputVar;
}
//icecream
public String toString() {
String line1 = String.format("%-25s$%",super.getName());
String line2Pt1 = String.format("%-16.2dscoops%@-8.2/f.:%", scoopCount, pricePerScoop);
String line2Pt2 = String.format("%-6f", calculateCost());
String line2Pt3 = String.format("[Tax: $%.-4f]", super.calculateTax());
String outputVar = String.format("%snt%-45s%s%17s", line1, line2Pt1, line2Pt2, line2Pt3);
return outputVar;
}
//Sundae class which extends IceCream class
public String toString() {
String line1 = String.format("%-25s$%",super.getName());
String line2Pt1 = String.format("%-16.2sTopping: %@-8.2/f.:%", toppingName, toppingPrice);
String line2Pt2 = String.format("%-6f", calculateCost());
String line2Pt3 = String.format("[Tax: $%.-4f]", super.calculateTax());
String outputVar = String.format("%snt%-45s%s%17s", line1, line2Pt1, line2Pt2, line2Pt3);
return outputVar;
}

此外,我还有另一个类-Order,我想在其中获得toString((方法值:

public String toString() {
String finalOutput = "";
finalOutput += "------------------------Receipt-------------------";
for() {

所以,我的问题是,我如何从子层访问toString值,然后如何通过它们进行创建,以便将值添加到我的finalOutput变量中?

创建一个抽象类:

public abstract class ToMyString
{
public abstract String toString();
private static ArrayList<ToMyString> ivClasses = new ArrayList<>();
public ToMyString()
{
super();
}
protected void addClass( ToMyString aClass )
{
ivClasses.add( aClass );
}
protected String[] getToStrings()
{
String[] toStrings = new String[ivClasses.size()];
int index = 0;
for (ToMyString aClass : ivClasses)
toStrings[index++] = aClass.toString();
return toStrings;
}
}

然后对于您想要的每个类的toString:

public class SomeClass extends ToMyString
{
private SomeClass()
{
super();
addClass( this );
}
}

最后,从任何扩展ToMyString:的类中获取toString((

for (String aString : getToStrings())
process(aString);

最新更新