Skip to content Skip to sidebar Skip to footer

Type Mismatch: Cannot Convert From Stringbuilder To String

This method returns the source of the given URL. private static String getUrlSource(String url) { try { URL localUrl = null; localUrl = new URL(url);

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"