Wie? Mit Kommentaren.
Sie kommentieren einfach ein POJO mit einer speziellen Annotation und die Bibliothek erledigt den Rest.
Warnung!
Ich bin nicht sicher, ob Hrisey, Lombok und andere Codegenerierungsbibliotheken mit dem neuen Build-System von Android kompatibel sind. Sie können oder kann nicht schön mit Hot-Swapping-Code (d.h. jRebel, Instant Run) spielen.
Vorteile:
- Code-Generierungsbibliotheken ersparen Ihnen die Erstellung von Standard-Quellcode.
- Anmerkungen machen Ihre Klasse schön.
Nachteile:
- Es funktioniert gut für einfache Klassen. Eine komplexe Klasse parzellierbar zu machen, kann schwierig sein.
- Lombok und AspectJ spielen nicht gut zusammen. [Details]
- Siehe meine Warnungen.
Hrisey
Warnung!
Hrisey hat ein bekanntes Problem mit Java 8 und kann daher nicht verwendet werden für And Siehe #Nr. 1 Fehler bei der Suche nach Symbolen (JDK 8) .
Hrisey basiert auf Lombok . Parcelable-Klasse mit Hrisey :
@hrisey.Parcelable
public final class POJOClass implements android.os.Parcelable {
/* Fields, accessors, default constructor */
}
Jetzt brauchen Sie keine Methoden der Schnittstelle Parcelable mehr zu implementieren. Hrisey wird den gesamten erforderlichen Code während der Vorverarbeitungsphase generieren.
Hrisey in Gradle-Abhängigkeiten:
provided "pl.mg6.hrisey:hrisey:${hrisey.version}"
Siehe hier für unterstützte Typen. Die Website ArrayList
ist unter ihnen.
Installieren Sie ein Plugin - Hrisey oder Lombok* - für Ihre IDE und nutzen Sie seine erstaunlichen Funktionen!
* Aktivieren Sie die Plugins Hrisey und Lombok nicht gleichzeitig, sonst erhalten Sie einen Fehler beim Start der IDE.
Paketbote
Parcelable-Klasse mit Paketbote :
@java.org.parceler.Parcel
public class POJOClass {
/* Fields, accessors, default constructor */
}
Um den generierten Code zu verwenden, können Sie die generierte Klasse direkt referenzieren, oder über die Parcels
Hilfsklasse mit
public static <T> Parcelable wrap(T input);
Zum Dereferenzieren der @Parcel
rufen Sie einfach die folgende Methode von Parcels
Klasse
public static <T> T unwrap(Parcelable input);
Parceler in Gradle-Abhängigkeiten:
compile "org.parceler:parceler-api:${parceler.version}"
provided "org.parceler:parceler:${parceler.version}"
Blick in README für unterstützte Attributtypen .
AutoParcel
AutoParcel ist ein AutoValue Erweiterung, die die Generierung paketfähiger Werte ermöglicht.
Einfach hinzufügen implements Parcelable
zu Ihrem @AutoValue
kommentierte Modelle:
@AutoValue
abstract class POJOClass implements Parcelable {
/* Note that the class is abstract */
/* Abstract fields, abstract accessors */
static POJOClass create(/*abstract fields*/) {
return new AutoValue_POJOClass(/*abstract fields*/);
}
}
AutoParcel in der Gradle-Build-Datei:
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
repositories {
/*...*/
maven {url "https://clojars.org/repo/"}
}
dependencies {
apt "frankiesardo:auto-parcel:${autoparcel.version}"
}
PaperParcel
PaperParcel ist ein Annotationsprozessor, der automatisch typsicheren Parcelable Boilerplate Code für Kotlin und Java generiert. PaperParcel unterstützt Kotlin-Datenklassen, Googles AutoValue über eine AutoValue-Erweiterung oder einfach normale Java-Bean-Objekte.
Verwendungsbeispiel aus 文書 .
Beschriften Sie Ihre Datenklasse mit @PaperParcel
umsetzen. PaperParcelable
und fügen Sie eine statische JVM-Instanz von PaperParcelable.Creator
z.B.:
@PaperParcel
public final class Example extends PaperParcelable {
public static final PaperParcelable.Creator<Example> CREATOR = new PaperParcelable.Creator<>(Example.class);
private final int test;
public Example(int test) {
this.test = test;
}
public int getTest() {
return test;
}
}
Für Kotlin-Benutzer, siehe Kotlin-Verwendung Für AutoValue-Benutzer, siehe AutoValue Verwendung .
ParcelableGenerator
ParcelableGenerator (README ist auf Chinesisch geschrieben und ich verstehe es nicht. Beiträge zu dieser Antwort von englisch-chinesisch sprechenden Entwicklern sind willkommen)
Verwendungsbeispiel aus README .
import com.baoyz.pg.Parcelable;
@Parcelable
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
のことです。 Android-apt Plugin hilft bei der Arbeit mit Annotationsprozessoren in Kombination mit Android Studio.