2016-05-11 8 views
2

Auf Android bei Verwendung Parceler, ist es möglich, eine Schnittstelle mit @Parceler annotieren und haben Sie möglicherweise @ParcelConstructor und @ParcelFactory Annotationen in Implementierungsklassen abholen?Parceler - Anmerkung Schnittstelle mit Fabriken auf einer Implementierung

Das Ziel ist, eine benutzerdefinierte ParcelConverter zu vermeiden Schreiben generische Feldzuordnung in Parceler wieder zu verwenden, aber es scheint, dass Dinge wie die implementations=argument zu @Parcel sind mehr in Richtung Mapping-Subtypen zu übergeordneten Typen gerichtet (eher als die andere Art und Weise um):

@Parcel // can this be used to serialize **all** implementations ... 
public interface MyIface { 

    String getProperty1(); 
    int getProperty2(); 
} 

public class MyImpl implements MyIface { 
    @ParcelFactory // and can this be used to deserialize the interface? 
    public static MyImpl fromParcelerValues(final String property1, final int property2) { 
    ... 
    } 
} 

natürlich könnte es Unklarheiten, wenn es mehrere passende Zuordnungen sind, aber ich kann keine Dokumente scheinen zu finden, um diese Funktionalität immer auch ohne Zweideutigkeiten zu arbeiten.

+0

Können Sie ein Beispiel für die generische Feldzuordnung angeben, an der Sie interessiert sind? –

+0

Ich möchte sagen "Ich kann jede Instanz dieser Schnittstelle einheitlich serialisieren" sowie Deserialisierungsmethoden für die Verwendung mit dieser Schnittstelle registrieren ... aber diese Methoden können außerhalb dieses Schnittstellentyps am besten funktionieren. Wie sage ich "Parceler, serialisieren Sie diesen Schnittstellentyp und schauen Sie dort nach, um ihn zu deserialisieren"? Das "generische Mapping" bedeutet nur, dass ich Parceler verwenden möchte, um meinen Code zu generieren, anstatt den Serialisierungscode manuell zu schreiben. – Del

Antwort

0

Sie sind richtig, Parceler arbeitet nur auf Klassen direkt mit @Parcel kommentierten und die implementations Parameter (die nun abgeschrieben und wird in Kürze aus der api entfernt werden) ist für etwas anderes gemeint.

Ich werde diese Antwort aktualisieren, wenn Sie ein konkretes Beispiel für das Problem geben, das Sie um "generische Feldzuordnung" lösen möchten.

Verwandte Themen