繁体   English   中英

为什么我的智能IDEA不建议我实现更多“ Parcelable”接口的方法?

[英]why doesn't my intelliJ IDEA suggest that I implement more methods of `Parcelable` interface?

我希望我的POJO实现Parcelable接口:

import android.os.Parcel;
import android.os.Parcelable;

public class Phone implements Parcelable {
    public int id;
    public String phone;

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel out, int i) {
        out.writeInt(id);
        out.writeString(phone);
    }
}

我看到一些教程( 12 )凡有方法得到实施:

 public static final Parcelable.Creator<MyParcelable> CREATOR
         = new Parcelable.Creator<MyParcelable>() {
     public MyParcelable createFromParcel(Parcel in) {
         return new MyParcelable(in);
     }

     public MyParcelable[] newArray(int size) {
         return new MyParcelable[size];
     }
 };

 private MyParcelable(Parcel in) {
     mData = in.readInt();
 }

我是否需要实施更多方法?

如果是这样,为什么右键单击Parcelable界面时,我的IDEA为什么不建议我实现它们?

请看一下文档: http : //developer.android.com/reference/android/os/Parcelable.html

它明确指出:

接口Parcelable.Creator接口必须作为公共CREATOR字段实现并提供,该接口从Parcel生成Parcelable类的实例。

术语MyParcelable()是构造函数。 在示例中,需要初始化接口实现对象的状态(mData字段),但Parcelable合同不需要此属性。 也就是说,您确实需要一个构造函数,除非您要通过设置器(需要依次实现)设置“ id”和“ phone”字段,但这仅在这些属性可以在设置期间更改时才有意义。对象的寿命。 因此取决于您的需求。

至于IntelliJ,它不会自动建议CREATOR,因为它只能自动建议未实现的方法-实际上,您需要通过一些专门命名的公共变量来提供创建者的事实并不常见(并且imo,但嘿),而是人工合同,IDE无法预见。

关于构造函数-接口没有构造函数,这是您的实现所需要的-自动建议应该在字段(id,phone)上作为突出显示弹出窗口,指出它们尚未初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM