未经检查的强制转换:'java.io.Serializable'为'java.util.ArrayList “

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未经检查的强制转换:'java.io.Serializable'为'java.util.ArrayList “相关的知识,希望对你有一定的参考价值。

我得到一个未经检查的投射警告,我不确定是否可以安全地压制它。

我在ArrayList<Fragment>里面放了一个Bundle。然后将此Bundle放入我的Intent中,如下所示:

Intent mIntent = new Intent(getBaseContext(),MySecondActivity.class);
Bundle myBundle = new Bundle();
myBundle.putSerializable("fragmentList",ArrayList<Fragment>);
mIntent.putExtras(myBundle);
startActivity(mIntent);

然后在我的新活动(MySecondActivity)上,我使用以下代码检索此数据:

(ArrayList<Fragment>) getIntent().getSerializableExtra("fragmentList")

我的编译器给了我以下警告:

“未经检查的强制转换:'java.io.Serializable'为'java.util.ArrayList'”

一切都工作正常,我说得对,我可以安全地压制它吗?

谢谢!

答案

片段不是可序列化的,对于片段的ArrayLists也是如此。所以,putSerializable在这方面是行不通的。即使它们是可序列化的,您仍然需要正确使用该方法。就像是:

ArrayList<Fragment> fragmentArrayList = new ArrayList<Fragment>();
fragmentList.add(foo);
...
myBundle.putSerializable("fragmentList", fragmentArrayList);  //not ArrayList<Fragment>

而是尝试,

  1. MySecondActivity创建这些你想在onCreate传递给它的片段
  2. 将要传递的数据类放置到该意图的包中的MySecondActivity,但实现Parcelable,因为它比Serializable更快/更好

对于第二步,here is a tutorial关于使您的数据类实现Parcelable

HTHS!

以上是关于未经检查的强制转换:'java.io.Serializable'为'java.util.ArrayList “的主要内容,如果未能解决你的问题,请参考以下文章

未经检查的强制转换:尝试在同一方法中将 Int 或 String 强制转换为 T(泛型类型)

Servlet ArrayList 到 JSP(从 Object 到 ArrayList 的未经检查的强制转换)

类型安全:从 Object 到 List<MyObject> 的未经检查的强制转换

Kotlin:如何使用列表强制转换:未经检查的强制转换:kotlin.collections.List<Kotlin.Any?> 到 kotlin.colletions.List<W

重新设计未经检查的演员警告

Effective Java 第三版——27. 消除非检查警告