未创建Java内部类新实例
我有一个未创建Java内部类新实例,java,android,inner-classes,Java,Android,Inner Classes,我有一个Java类,它将有许多内部类。这是为组织而做的,并将事情保存在一个单独的文件中 public class PUCObjects { public static class PUCNewsItem { public String title; public String summary; public String body; public String url; public String
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
public static ArrayList getPUCNews()引发IOException{
字符串url=”http://api.puc.edu/news/list?key=“+API_键+”&count=30”;
InputStream is=下载url(url);
XmlPullParserFactory pullParserFactory;
试一试{
pullParserFactory=XmlPullParserFactory.newInstance();
XmlPullParser=pullParserFactory.newPullParser();
setInput(is,null);
arraylistitems=null;
int eventType=parser.getEventType();
PUCObjects.PUCNewsItem=null;
Log.d(“调试:”,“启动:”+url);
while(eventType!=XmlPullParser.END_文档){
字符串名称=null;
开关(事件类型){
案例XmlPullParser.START_文档:
items=newarraylist();
打破
case XmlPullParser.START_标记:
name=parser.getName();
//Log.d(“开始标记名:”,parser.getName()+“=”+Name);
如果(名称=“项目”){
Log.d(“调试:,“项”);
item=新的PUCObjects.PUCNewsItem();
}else if(项!=null){
Log.d(“调试:,”项不为空2”);
如果(名称=“标题”){
Log.d(“Title:,parser.nextText());
item.title=parser.nextText();
}else if(名称=“摘要”){
item.summary=parser.nextText();
}else if(名称==“正文”){
item.body=parser.nextText();
}
}
打破
case XmlPullParser.END_标记:
name=parser.getName();
if(name.equalsIgnoreCase(“项目”)和&item!=null){
Log.d(“调试:,“添加项”);
项目。添加(项目);
}
打破
}//终端开关
eventType=parser.next();
}//结束时
Log.d(“调试:,“完成”);
退货项目;
}catch(XMLPullParseRexE){
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}//结束
我正在尝试创建对象,比如item=newpucObjects.PUCNewsItem()
但它似乎总是null
这是对象没有被创建的原因吗?问题是字符串比较。由于
=
检查,您的if
语句未生成true
if (name == "item"){
比较对象/字符串时,需要使用
equals()
方法,而不是==
。阅读此线程以了解有关比较的更多信息。由于=
检查,您的if
语句未生成true
if (name == "item"){
比较对象/字符串时,需要使用equals()
方法,而不是==
。阅读此线程以了解有关的更多信息