0

大家好,我是java新手。请帮帮我

我有以下代码

package sun.mun.fun;

import inship.InShipException;
import inship.PackageDetail;
import inship.Uspsrates;
import inship.UspsratesAboutPropertyEditor;
import inship.UspsratesBeanInfo;
import inship.UspsratesRequestedServicePropertyEditor;

public class Usps {


    public Uspsrates getRate()  {
        Uspsrates rate = new Uspsrates();

        try {
            rate.getUSPSAccount().setServer(rate.toString());
            rate.getUSPSAccount().setServer("http://production.shippingapis.com/ShippingAPI.dll");  
            rate.getUSPSAccount().setUserId("747THEFI1034");
            rate.getUSPSAccount().setPassword("510QU40FX616");
            rate.getSenderAddress().setZipCode("27502");
            rate.getRecipientAddress().setZipCode("20770");
            rate.getPackages().add(new PackageDetail());
            rate.getPackages().item(0).setWeight("1");
            rate.getPackages().item(0).setLength(Integer.parseInt("5"));
            rate.getPackages().item(0).setWidth(Integer.parseInt("5"));
            rate.getPackages().item(0).setHeight(Integer.parseInt("5"));    
            rate.getPackages().item(0).setGirth((2 * rate.getPackages().item(0).getLength()) + (2 * rate.getPackages().item(0).getWidth()));
            rate.getPackages().item(0).setSize(Integer.parseInt("0"));
            rate.getPackages().item(0).setPackagingType(inship.PackageDetail.ptNone);
            rate.setRequestedService(inship.Uspsrates.stUnspecified);
            rate.getRates();

        } catch (InShipException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        return rate;


    }


@Override
public String toString() {
    return "Usps [getRate()=" + getRate() + "]";
}



public static void main(String[] args) {

    Usps u = new Usps();

    System.out.println(u.getRate().toString());


}


}

当我运行它时,它会给出这个输出

inship.Uspsrates@16672d6

我不想要这个值。我想要这个在字符串中。我应该做什么帮助。

提前致谢

4

3 回答 3

2

Uspsrates 类应覆盖toString()方法并应返回String带有所需详细信息的 a。如果您只是打印一个对象,编译器会将其转换为Object.toString()并返回以下格式的字符串ClassName@Hashcode

在此处查看 Object's to String 方法的文档

于 2014-08-29T10:58:22.517 回答
1

将您的toString()实现移动到您的Uspsrates对象。

@Override
public String toString() {
    return "Usps [getRate()=" + getRate() + "]";
}

因为你的getRate()方法返回一个UspsratesnotUsps

于 2014-08-29T10:58:16.863 回答
0

gives this output inship.Uspsrates@16672d6

你还期望它能给你什么

你在类toString()里面,Usps但是你的getRate()方法返回一个 Object 类型Uspsrates

当你这样做时

System.out.println(u.getRate().toString()); 

它只是打印返回的对象的哈希值getRate()

如何解决这个问题?

Uspsrates只需在你的类中添加一个 toString()

于 2014-08-29T11:18:23.757 回答