2017-06-21 44 views
0

我创建一个应用程序,它会从给定串错误:(28,58)错误:不兼容的类型:对象不能被转换为地址

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(); 
    } 
} 

显示latitutes和经度和此异常是发生:

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

回答

0

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

当下面的代码被称为:

Address address = addressList.get(0); 

它从下面的代码返回一个对象

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

然后,它会给出一个错误,因为addressList.get(0)是ISN对象”例如instanceof地址。

了解更多关于原始类型:https://stackoverflow.com/a/2770692/4758255

+0

感谢,我想问一下,如果 '地址地址=(地址)addressList.get(0);'的使用和数据类型保持原始的,会是什么区别... –

+0

这是一个向下投影,它将失败并抛出'ClassCastException',因为来自'addressList.get(0)'的实际对象类型是一个**对象**。 **对象**不是**地址**,所以我们不能将其转换为**地址**。 –

相关问题