【问题】
Android中,即Java中,如何调用函数,传递一个OUT类型的参数,然后可以保存函数返回时的值的。
【解决过程】
1.即,用这样的代码:
/** Extract single string from input whole string * Note: * 1. input pattern should include one group, like 'xxx(xxx)xxx' * 2. output is in extractedStr * */ public Boolean extractSingleStr(String pattern, String extractFrom, String extractedStr) { Pattern strP = Pattern.compile(pattern); Matcher foundStr = strP.matcher(extractFrom); Boolean found = foundStr.find(); if(found) { extractedStr = foundStr.group(1); } return found; } String extractedTitle = ""; if(extractSingleStr("<p\\s+class=\"mid_tit\">(.+?)</p>", respHtml, extractedTitle)) { etUrlOrId.setText(extractedTitle); }
是无法通过extractedTitle获得对应的值的。
2.试了试,把函数写出
取地址形式,加上&:
String &extractedStr
或者指针形式:
String *extractedStr
都是语法错误,不合法的。
3.参考:
想去试试,结果发现,除了定义String数组,貌似还真没有方便的实现方式的。
4.再去参考:
和
都好像是用
StringBuilder
去试试:
public Boolean extractSingleStr(String pattern, String extractFrom, StringBuilder extractedStr) { Pattern strP = Pattern.compile(pattern); Matcher foundStr = strP.matcher(extractFrom); Boolean found = foundStr.find(); if(found) { extractedStr.append(foundStr.group(1)); } return found; } StringBuilder extractedTitle = new StringBuilder(); if(extractSingleStr("<p\\s+class=\"mid_tit\">(.+?)</p>", respHtml, extractedTitle)) { etUrlOrId.setText(extractedTitle); }
结果是可以的:
5.另外这里解释的更加清楚的:
How to use an output parameter in Java?
【总结】
当Java中函数中,想要实现output parameter时,对应的参数,不能是Immutable,即不能是,不可更改的,
而String就是Immutable,所以要换用StringBuilder之类的,Mutable的类型的变量,去实现对应的output parameter。
转载请注明:在路上 » 【已解决】Android(Java)中如何实现(类似于C#中的OUT)的输出类型参数(output parameter)