错误: 不兼容的类型: List<Data>无法转换为ArrayList<? extends Parcelable> outState.putParcelableArrayList("list_one", (ArrayList<? extends Parcelable>) mData);
时间: 2024-02-27 15:58:55 浏览: 124
这个错误是因为 `List<Data>` 与 `ArrayList<? extends Parcelable>` 之间存在类型不兼容的问题。
解决方法是将 `List<Data>` 转换为 `ArrayList<Data>`,然后再将其转换为 `ArrayList<? extends Parcelable>`。代码如下:
```
outState.putParcelableArrayList("list_one", new ArrayList<>(mData));
```
这里使用了 `ArrayList` 的构造方法将 `List<Data>` 转换为 `ArrayList<Data>`,然后再将其转换为 `ArrayList<? extends Parcelable>`。这样就可以避免类型不兼容的问题了。
相关问题
错误: 不兼容的类型: String[]无法转换为List<String> List<String> cameraIds = CameraManager.getCameraIdList();
这个错误提示表明你在尝试将一个`String[]`类型的数组转换为`List<String>`类型,但是由于它们在Java中是不兼容的数据结构,这种转换操作无法直接进行。在Android的`CameraManager`中,`getCameraIdList()`方法通常会返回一个`String[]`类型的数组,代表可用的相机ID列表。
为了将`String[]`转换为`List<String>`,你需要创建一个新的`List`并将数组的内容逐个添加进去,例如:
```java
String[] cameraIdsArray = CameraManager.getCameraIdList();
List<String> list = Arrays.asList(cameraIdsArray);
```
或者手动遍历数组并构造新的`List`:
```java
List<String> list = new ArrayList<>();
for (String cameraId : cameraIdsArray) {
list.add(cameraId);
}
```
这样就可以避免类型不兼容的问题了。
类型不匹配:不能从 List<List<Object & Serializable & Comparable<?>>> 转换为 List<List<Object>>
这个错误提示说明你尝试将一个 `List<List<Object & Serializable & Comparable<?>>>` 类型的对象转换为 `List<List<Object>>` 类型的对象,但是这两个类型不兼容。
`List<List<Object & Serializable & Comparable<?>>>` 类型表示一个元素类型为 `List`,其中每个元素又是一个元素类型为 `Object`、`Serializable` 和 `Comparable` 的对象的列表。而 `List<List<Object>>` 类型表示一个元素类型为 `List`,其中每个元素又是一个元素类型为 `Object` 的对象的列表。
由于 `Object & Serializable & Comparable<?>` 比 `Object` 类型更加具体,所以 `List<List<Object & Serializable & Comparable<?>>>` 类型的对象不能直接转换为 `List<List<Object>>` 类型的对象,因为前者包含了更多的信息。
如果你需要将 `List<List<Object & Serializable & Comparable<?>>>` 类型的对象转换为 `List<List<Object>>` 类型的对象,你可以考虑先将其中每个元素中的 `Object & Serializable & Comparable<?>` 类型的对象转换为 `Object` 类型的对象,再将整个列表转换为 `List<List<Object>>` 类型的对象。例如:
```java
List<List<Object & Serializable & Comparable<?>>> list1 = ...;
List<List<Object>> list2 = new ArrayList<>();
for (List<Object & Serializable & Comparable<?>> innerList : list1) {
List<Object> convertedInnerList = new ArrayList<>();
for (Object & Serializable & Comparable<?> obj : innerList) {
convertedInnerList.add((Object) obj); // 将 Object & Serializable & Comparable<?> 类型的对象转换为 Object 类型的对象
}
list2.add(convertedInnerList);
}
```
阅读全文
相关推荐
















