【问题标题】:Error:(28, 58) error: incompatible types: Object cannot be converted to Address错误:(28, 58) 错误:不兼容的类型:对象无法转换为地址
【发布时间】:2017-06-21 15:06:17
【问题描述】:

我正在创建一个应用程序,它将显示给定字符串的纬度和经度

Geocoder geocoder = new Geocoder(context, Locale.getDefault());
String result = null;
try {
  List addressList = geocoder.getFromLocationName(locationAddress, 1);
  if (addressList != null && addressList.size() > 0) {
     Address address = addressList.get(0);
     StringBuilder sb = new StringBuilder();
     sb.append(address.getLatitude()).append("\n");
     sb.append(address.getLongitude()).append("\n");
     result = sb.toString();
  }
}

并且正在发生此异常:

Error:(28, 58) error: incompatible types: Object cannot be converted to Address
The List addressList is storing address type values .

【问题讨论】:

    标签: android geocode


    【解决方案1】:

    这是因为您使用了原始类型,即List。您需要使用List<Address>

    当调用以下代码时:

    Address address = addressList.get(0);
    

    它从以下代码返回一个对象

    List addressList = geocoder.getFromLocationName(locationAddress, 1);
    

    然后它会报错,因为addressList.get(0) 是一个不是instanceof 地址的对象。

    阅读有关原始类型的更多信息:https://stackoverflow.com/a/2770692/4758255

    【讨论】:

    • 谢谢,我想问一下如果使用Address address = (Address)addressList.get(0);并且数据类型保持原始,有什么区别......
    • 这是一个向下转换,它将失败并抛出一个ClassCastException,因为来自addressList.get(0) 的实际对象类型是一个ObjectObject 不是 Address,因此我们不能将其转换为 Address
    猜你喜欢
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多