簡體   English   中英

未創建Java內部類新實例

[英]Java inner class new instance not being created

我有一個Java類,它將具有許多內部類。 這樣做是為了組織並將事情保存在單獨的文件中。

public class PUCObjects
{

    public static class PUCNewsItem
    {

        public String title;
        public String summary;
        public String body;
        public String url;
        public String imageUrl;

    }

}

然后,我試圖創建該內部類的新實例(在另一個解析一些遠程XML的類中進行此操作),但是由於某種原因,它似乎沒有被創建:

public static ArrayList<PUCObjects.PUCNewsItem> getPUCNews() throws IOException {

        String url = "http://api.puc.edu/news/list?key="+API_KEY+"&count=30";
        InputStream is = downloadUrl(url);
        XmlPullParserFactory pullParserFactory;

        try {
            pullParserFactory = XmlPullParserFactory.newInstance();
            XmlPullParser parser = pullParserFactory.newPullParser();
            parser.setInput(is, null);

            ArrayList<PUCObjects.PUCNewsItem> items = null;
            int eventType = parser.getEventType();
            PUCObjects.PUCNewsItem item = null;
            Log.d("Debug: ", "Start: "+url);
            while (eventType != XmlPullParser.END_DOCUMENT){
                String name = null;
                switch (eventType){
                    case XmlPullParser.START_DOCUMENT:
                        items = new ArrayList<PUCObjects.PUCNewsItem>();
                        break;
                    case XmlPullParser.START_TAG:
                        name = parser.getName();
                        //Log.d("Start Tag Name: ", parser.getName()+"  ===  "+name);
                        if (name == "item"){
                            Log.d("Debug: ", "Item");
                            item = new PUCObjects.PUCNewsItem();
                        } else if (item != null){
                            Log.d("Debug: ", "Item is not NULL 2");
                            if (name == "title"){
                                Log.d("Title: ", parser.nextText());
                                item.title = parser.nextText();
                            } else if (name == "summary"){
                                item.summary = parser.nextText();
                            } else if (name == "body_text"){
                                item.body = parser.nextText();
                            }  
                        }
                        break;
                    case XmlPullParser.END_TAG:
                        name = parser.getName();
                        if (name.equalsIgnoreCase("item") && item != null) {
                            Log.d("Debug: ", "ADD ITEM");
                            items.add(item);
                        }
                        break;
                }//end switch

                eventType = parser.next();

            }//end while

            Log.d("Debug: ", "Done");
            return items;

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

        return null;

    }//end

我正在嘗試創建類似item = new PUCObjects.PUCNewsItem();的對象item = new PUCObjects.PUCNewsItem(); 但它似乎總是null

為什么沒有創建對象是有原因的?

問題是String比較。 由於==檢查,您的if語句未得出true

if (name == "item"){

比較對象/字符串時,需要使用equals()方法而不是== 閱讀此線程以獲取有關eqauals()vs ==的更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM