【问题】
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)