gpt4 book ai didi

java - 如何从位于方法内部的匿名内部类返回变量

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:05 25 4
gpt4 key购买 nike

我想从方法内部指定的匿名类返回一个字符串。这里我想从方法 parseXml 返回 respMessage。我不知道如何做到这一点,我无法将其作为类变量。请告诉我如何返回?我也无法将其设为最终变量,因为必须分配局部最终变量并且无法重新分配。

private String parseXml(String resXml) {
logger.info("In sax parsing");
//final String respMessage;

try {

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();

DefaultHandler handler = new DefaultHandler() {

boolean isResMessage = false;
protected String respMessage;

public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {

if (qName.equalsIgnoreCase("ErrorMessage")) {

isResMessage = true;
}
}

public void characters(char ch[], int start, int length) throws SAXException {

if (isResMessage) {

respMessage = new String(ch, start, length);

isResMessage = false;
}
}

public String getRespMessage() {
return this.respMessage;
}
};

saxParser.parse(new InputSource(new StringReader(resXml)), handler);

} catch (Exception e) {

e.printStackTrace();
}

return this.DefaultHandler().getRespMessage();
}

最佳答案

在匿名类中,不能使用封闭方法中的非最终局部变量。但是有一个众所周知的技巧:使用一个元素的最终数组,并且您的匿名类可以修改该元素:

    try {

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
final String[] result = new String[1];

DefaultHandler handler = new DefaultHandler() {
void someMethod() {
result[0] = ...;
}
...
};
...
return result[0];
}

关于java - 如何从位于方法内部的匿名内部类返回变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42429064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com