我正在从sharedPrefences的onCreate中将项目添加到我的arraylist中,但是在执行此操作之前我需要初始化我的arraylist吗?
private ArrayList<Song> songList = null;
//Initialize mSharedPreferences
storageUtil = new StorageUtil(this);
//Load values from mSharedPreferences
songList = storageUtil.getRecentPlayed();
或者这样做
private ArrayList<Song> songList = null;
songList = new ArrayList<>();
//Initialize mSharedPreferences
storageUtil = new StorageUtil(this);
//Load values from mSharedPreferences
songList = storageUtil.getRecentPlayed();
第一个工作正常,并在日志中显示我的物品。
答案 0 :(得分:2)
如果storageUtil.getRecentPlayed()
返回一个ArrayList<Song>
(我相信确实如此),那么您可以简单地将其应用于变量,因为该方法已经初始化了ArrayList
。
您无需先初始化ArrayList。
对不起,我的回答很短,我正在用手机打字
答案 1 :(得分:0)
不。 songList
变量值完全由songList = storageUtil.getRecentPlayed();
代替。如果您首先将值扔进垃圾收集器,则不需要初始化。实际上,即使最初将其设置为null
也无济于事。您的代码应为:
storageUtil = new StorageUtil(this);
private ArrayList<Song> songList = storageUtil.getRecentPlayed();
答案 2 :(得分:0)
在您的情况下,getRecentlyPlayed()
是getter
。它返回一个类的属性,而不直接暴露该属性本身。因此storageUtil
将被getRecentlyPlayed()
中的值替换,从而对其进行初始化。