Mam abstrakcyjną klasę A
, która implementuje Parcelable.Dziedziczenie spadkowe: klasa abstrakcyjna - Który STWÓRCA?
Mam klasę B
i klasę C
, które obaj rozszerzają A
. Jak mogę je rozdzielić?
Z tego powodu mogłem połączyć go i dostarczyć CREATOR
zarówno w A
jak i B
, jak sugerowano w wielu postach. Ale ponieważ mam inne obiekty, które przechowywać A-B-C
klas i wdrożenia Parcelable themselfes, że takie podejście nie wydaje się działać, bo gdy chcę przejść ArrayList A
musiałbym użyć CREATOR
w wpisywanych listy przez
ArrayList<A> elements = new ArrayList<>();
in.readTypedList(elements , B.CREATOR); // B.CREATOR? C.CREATOR???
Co oczywiście nie ma sensu. Jak więc właściwie zrobić A Parcelable?
Ja chcę sprawić, że ta klasa będzie działała w trybie paczkowym, aby móc odnieść się do litery A w zwykły sposób.
)
public abstract class A implements Parcelable {
final String globalVar;
public A(String globalVar) {
this.globalVar = globalVar;
}
}
B)
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);
}
}
C)
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);
}
}
która jest abstrakcyjna – Blackbelt
A. Edytowana odpowiedź. –
, ale nie możesz mieć twórcy w A, ponieważ nie można utworzyć instancji, byłoby łatwiej, gdybyś opublikował przynajmniej część A – Blackbelt