我有 class Playlist extends ArrayList 我在
中使用Playlist playlist = new Playlist();
intent.putExtra("playlist", playlist);
然后我尝试将其恢复:
if (getIntent().hasExtra("playlist")) {
playlist = (Playlist)(getIntent().getExtras().getStringArrayList("playlist"));
}
但我收到一个错误: 原因:java.lang.ClassCastException:java.util.ArrayList无法转换为pl.mal.player.Playlist。 我知道问题是我想将基类转换为子类。但我不知道如何在这个例子中避免它。有人可以帮助我吗?
最佳答案
getStringArrayList
无法返回 Playlist
对象。你必须做类似的事情
List<String> list = getIntent().getExtras().getStringArrayList("playlist");
Playlist playlist = new Playlist();
playlist.addAll(list);
您只能将对象转换为由具体运行时类型实现的父类(super class)和接口(interface)。在本例中就是 ArrayList。如果您想更改它,则必须修改 getStringArrayList
方法,因为其中明确表示 new ArrayList
关于java - putExtras(child class) - 接收基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26617800/