Type Mismatch: Cannot Convert From Stringbuilder To String
Solution 1:
Just use
return ma.toString();
instead of
return ma;
ma.toString()
returns the string representation for your StringBuilder.
See StringBuilder#toString() for details
As Valeri Atamaniouk suggested in comments, you should also return something in the catch
block, otherwise you will get a compiler error for missing return statement
, so editing
} catch (Exception e) {
Log.e("ERR",e.getMessage());
}
to
} catch (Exception e) {
Log.e("ERR",e.getMessage());
returnnull; //or maybe return another string
}
Would be a good idea.
EDIT
As Esailija suggested, we have three anti-patterns in this code
} catch (Exception e) { //You should catch the specific exception
Log.e("ERR",e.getMessage()); //Don't log the exception, throw it and let the caller handle itreturnnull; //Don't return null if it is unnecessary
}
So i think it is better to do something like that:
privatestatic String getUrlSource(String url)throws MalformedURLException, IOException {
URLlocalUrl=null;
localUrl = newURL(url);
URLConnectionconn= localUrl.openConnection();
BufferedReaderreader=newBufferedReader(
newInputStreamReader(conn.getInputStream()));
Stringline="";
String html;
StringBuilderma=newStringBuilder();
while ((line = reader.readLine()) != null) {
ma.append(line);
}
return ma.toString();
}
And then, when you call it:
try {
StringurlSource= getUrlSource("http://www.google.com");
//process your url source
} catch (MalformedURLException ex) {
//your url is wrong, do some stuff here
} catch (IOException ex) {
//I/O operations were interrupted, do some stuff here
}
Check these links for further details about Java Anti-Patterns:
Solution 2:
I have same problem while converting StringBuilder to String, and i use above point but that's not give correct solution. using above code output comes like this
String out=ma.toString();
//out=[Ljava.lang.String;@41e633e0
After that i find out correct solution.Think is create a new String instant inserted of StringBuilder like this..
String out=newString(ma);
Solution 3:
try
return ma.toString(); as you can not directly store stringbuilder variable into a string variable.
Post a Comment for "Type Mismatch: Cannot Convert From Stringbuilder To String"