简体   繁体   English

我如何从公共无效方法中获取字段?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM