[英]Java inner class new instance not being created
I have a Java
class that is going to have a number of inner classes. 我有一个Java
类,它将具有许多内部类。 This is done for organization and to keep things in a separate file. 这样做是为了组织并将事情保存在单独的文件中。
public class PUCObjects
{
public static class PUCNewsItem
{
public String title;
public String summary;
public String body;
public String url;
public String imageUrl;
}
}
I am then trying to create a new instance of that inner class (doing this in another class that parses some remote XML), but for some reason it doesn't seem to get created: 然后,我试图创建该内部类的新实例(在另一个解析一些远程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
I am trying to create the object like item = new PUCObjects.PUCNewsItem();
我正在尝试创建类似item = new PUCObjects.PUCNewsItem();
的对象item = new PUCObjects.PUCNewsItem();
but it seems to always be null
. 但它似乎总是null
。
Is there a reason why this is object isn't getting created? 为什么没有创建对象是有原因的?
Problem is String
comparison. 问题是String
比较。 Your if
statement is not resulting to true
due to ==
check. 由于==
检查,您的if
语句未得出true
。
if (name == "item"){
You need to use equals()
method instead of ==
when comparing Objects/Strings. 比较对象/字符串时,需要使用equals()
方法而不是==
。 Read this thread for more information on eqauals() vs == 阅读此线程以获取有关eqauals()vs ==的更多信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.