1

ここで何が間違っているのか理解しようとしていますが、本当に意味がありません。クラス calleld LatLongBean があります。ここで、XML フィードを解析しようとしています。

私はすべてのロジックを実行するメソッドを持っています。いくつかのゲッターとセッターがあります。

セッターは機能しているように見えますが、ゲッターは機能していません。

これは LatLongBean です。

public class LatLongBean {

    private String lat;
    private String lng;
    private String address;
    private String url = "http://maps.googleapis.com/maps/api/geocode/xml?address=";

    public void LatLongBean(String address, String lat, String lng) throws ParserConfigurationException, SAXException, IOException {
        this.address = address;
        this.lat = lat;
        this.lng = lng;

        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(new URL(url + address + "&sensor=false").openStream());
        doc.getDocumentElement().normalize();

        NodeList nodes = doc.getElementsByTagName("location");

        for (int i = 0; i < nodes.getLength(); i++) {
            Node node = nodes.item(i);

            if (node.getNodeType() == Node.ELEMENT_NODE) {
                Element element = (Element) node;
                lat = getValue("lat", element);
                lng = getValue("lng", element);
            }
        }
    }

    private static String getValue(String tag, Element element) {
        NodeList nodes = element.getElementsByTagName(tag).item(0).getChildNodes();
        Node node = (Node) nodes.item(0);
        return node.getNodeValue();
    }

    public String getLat() {
        System.out.println(lat);
        return lat;
    }

    public String getLng() {
        System.out.println(lng);
        return lng;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

そして、これは私がこのクラスを使用するために行うことです:

LatLongBean latLong1 = new LatLongBean();
latLong1.setAddress("Amsterdam");
latLong1.getLat();
latLong1.getLng();

ゲッターは null を返しています!

LatLongBean メソッドを無効にせず、コンストラクターとして使用すると、魅力のように機能します。

LatLongBean latLong1 = new LatLongBean("Amsterdam");
latLong1.getLat();
latLong1.getLng();

誰か助けてくれませんか?

事前にサンクス!

4

1 に答える 1

5

値ジョブの解析と設定を行うpublic void LatLongBean(String address, String lat, String lng) methodを呼び出していません。

ええ、これは方法です。上記をコンストラクターにしたい場合は、そこから戻り値の型 を削除する必要がありますvoid。以下のように

public LatLongBean(String address, String lat, String lng) {
     // your constructor logic
} 

そしてそれを次のように呼び出します

LatLongBean latLong1 = new LatLongBean("http://youraddress.com/xml","a","b");
latLong1.setAddress("Amsterdam");
latLong1.getLat();
latLong1.getLng();

編集:また、コンストラクターコードであるはずのコードで、以下の行を次のように変更します

       if (node.getNodeType() == Node.ELEMENT_NODE) {
            Element element = (Element) node;
            this.lat = getValue("lat", element); // not using this will not write the Document read value to the class variable lat and lng, instead it writes to the parameter itself
            this.lng = getValue("lng", element);
        }
于 2013-05-10T05:39:09.090 に答える