[英]How can i get field from public void method?
I have the method 我有方法
public String parseRootElement(InputStream xmlStream) throws SAXException {
String name;
try {
DefaultHandler handler;
handler = new DefaultHandler() {
@Override
public void startElement(String uri,String localName,String qName,Attributes attributes){
name=qName;
}
};
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
parser.parse(xmlStream, handler);
return name;
} catch (ParserConfigurationException | IOException ex) {
throw new IllegalStateException("ParserConfigurationException", ex);
}
}
How can I get qName from public void startElement() ? 如何从public void startElement()获取qName ? name=qName doesnt work, because of
name = qName不起作用,因为
local variable input is accessed within inner class;
在内部类中访问局部变量输入; needs to be declared final
需要宣布为最终
There are a lot of similar questions but I still be dumb. 有很多类似的问题,但我仍然很愚蠢。
Change String name;
更改
String name;
to final String[] name = new String[1];
final String[] name = new String[1];
, name=qName;
,
name=qName;
to name[0]=qName;
name[0]=qName;
and return name;
并
return name;
to return name[0];
return name[0];
. 。
That creates an array where the result is stored in and retrieved from. 这将创建一个数组,在其中存储结果并从中检索结果。 By storing the result in an array lets us make the "name" variable final and thus the compiler happy.
通过将结果存储在数组中,我们可以使“ name”变量成为最终变量,从而使编译器满意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.