Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Parcelable vs Serializable-适用于没有任何字段的类_Java_Android_Serialization_Parcelable - Fatal编程技术网

Java Parcelable vs Serializable-适用于没有任何字段的类

Java Parcelable vs Serializable-适用于没有任何字段的类,java,android,serialization,parcelable,Java,Android,Serialization,Parcelable,通常,我必须在没有任何内部数据的情况下将某个接口实例传递给片段(或活动)。要将其传递给片段(或活动),我应该将其作为Parcelable或Serializable写入Bundle(或Intent)。我应该从这两个选项中选择什么 例如: public class SomeFragment { public static interface Helper { View prepareView(SomeFragment fragment, LayoutInflater inf

通常,我必须在没有任何内部数据的情况下将某个接口实例传递给片段(或活动)。要将其传递给片段(或活动),我应该将其作为
Parcelable
Serializable
写入
Bundle
(或
Intent
)。我应该从这两个选项中选择什么

例如:

public class SomeFragment {

    public static interface Helper {
        View prepareView(SomeFragment fragment, LayoutInflater inflater);
        // etc.
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return extractHelperFromArguments().prepareView(this, inflater);
    }

    public static SomeFragment newInstance(Helper helper) {
        SomeFragment fragment = new SomeFragment();
        // 
        // Bundle args = new Bundle();
        //
        // args.putParcelable(KEY_HELPER, (Parcelable) helper);
        // or
        // args.putSerializable(KEY_HELPER, (Serializable) helper);
        // ?
        //
        // fragment.setArguments(args)
        return fragment;
    }

}
如果我选择了
Parcelable
,那么我必须声明静态字段
CREATOR
和空方法
descripbecontents()
writeToParcel()
(空是因为类没有字段)

如果我选择
Serializable
,那么我就不必做任何事情


对不起,我的英语很好,这是一个很好的链接。阅读此链接后,您将不再有关于可打包与可序列化的问题


这是一个完美的答案。如果速度因子与上图一样只有2,我就不会费心实现Parcelable,事实上,我觉得这一点更接近事实:@pskink LOL。感谢分享链接。尽管实现serializable很简单,但Parcelable仍然是一种选择。这个答案有误导性,因为这个问题是专门针对没有字段的对象的。传统序列化的成本来自对类变量的反射,如果没有任何变量进行反射,则不会产生任何成本。