当前位置:  开发笔记 > 编程语言 > 正文

为什么我会得到"不兼容的类型:对象无法转换为字符串"?

如何解决《为什么我会得到"不兼容的类型:对象无法转换为字符串"?》经验,为你挑选了1个好方法。

我正在尝试使用最简单的代码从Android应用程序调用Web API REST方法,我在这里找到的代码看起来很有前途:

public String callWebService(String requestUrl)
{
    String deviceId = "Android Device";

    HttpClient httpclient = new DefaultHttpClient();
    HttpGet request = new HttpGet(requestUrl);
    request.addHeader("deviceId", deviceId);

    ResponseHandler handler    = new BasicResponseHandler();
    String result = "";

    try
    {
        result = httpclient.execute(request, handler); // <= a line too far
    }
    catch (ClientProtocolException e)
    {
        e.printStackTrace();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }

    httpclient.getConnectionManager().shutdown();

    return result;
}

但是,它不会编译,告诉我:"不兼容的类型:对象不能转换为String"在这一行:

result = httpclient.execute(request, handler);

它确实提供了几个选项来试图绕过logjam:

在此输入图像描述

......但我不知道哪些选项(如果有的话)是解决这一难题的首选方式.一种方式"方式"?

UPDATE

正如我所说,这段代码看起来很有希望,但我觉得它基本上不可用,因为它给了我可怕的" NetworkOnMainThreadException "来自logcat:

04-01 13:18:41.861    1267-1267/hhs.app E/AndroidRuntime? FATAL EXCEPTION: main
. . .
    java.lang.IllegalStateException: Could not execute method of the activity
. . .
     Caused by: java.lang.reflect.InvocationTargetException
. . .
     Caused by: android.os.NetworkOnMainThreadException

Sotirios Del.. 6

因为您使用的是原始类型

ResponseHandler handler = ...

对于原始类型,方法声明中的类型变量将被删除.所以一切都显示为Object(或类型参数的最左边界限).

而是使用参数化类型

ResponseHandler handler = ...

这也有效,因为BasicResponseHandler扩展ResponseHandler.

现在

httpclient.execute(request, handler);

将具有与声明时使用的类型参数关联的返回类型handler,String因此可以将结果分配给String变量(或任何String预期的位置).



1> Sotirios Del..:

因为您使用的是原始类型

ResponseHandler handler = ...

对于原始类型,方法声明中的类型变量将被删除.所以一切都显示为Object(或类型参数的最左边界限).

而是使用参数化类型

ResponseHandler handler = ...

这也有效,因为BasicResponseHandler扩展ResponseHandler.

现在

httpclient.execute(request, handler);

将具有与声明时使用的类型参数关联的返回类型handler,String因此可以将结果分配给String变量(或任何String预期的位置).

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有