У меня есть абстрактный класс A
, который реализует Parcelable.Возможное наследование: абстрактный класс - Какой СОЗДАТЕЛЬ?
У меня есть класс B
и класс C
, которые оба продлят A
. Как я могу сделать их обоснованными?
Из-за причин я мог бы связать его и предоставить CREATOR
как в A
, так и в B
, как это предлагается во многих сообщениях. Но так как у меня есть другие объекты, которые хранят в A-B-C
классы и реализацию Parcelable themselfes, что подход, кажется, не работает, потому что, когда я хочу, чтобы передать ArrayList из A
я бы использовать CREATOR
в типизированном списке
ArrayList<A> elements = new ArrayList<>();
in.readTypedList(elements , B.CREATOR); // B.CREATOR? C.CREATOR???
Что явно не имеет смысла. Итак, как я могу правильно сделать A Parcelable?
I.e Я хочу сделать этот класс Parcelable, чтобы я мог ссылаться на A в общем виде.
)
public abstract class A implements Parcelable {
final String globalVar;
public A(String globalVar) {
this.globalVar = globalVar;
}
}
Б)
public class B extends A {
String bVar;
public B(String global, String bVar) {
super(global);
this.bVar = bVar;
}
private B(Parcel in) {
super(in.readString());
this.bVar = in.readString();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(bVar);
}
}
С)
public class C extends A {
String cVar;
public C(String global, String cVar) {
super(global);
this.cVar = cVar;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(cVar);
}
}
который является абстрактным – Blackbelt
A. Отредактированный ответ. –
, но тогда у вас не может быть создателя в A, потому что он не может быть создан, было бы проще, если бы вы разместили хотя бы часть A – Blackbelt