Oda ( https://developer.android.com/topic/libraries/architecture/room ) Jake Whartons makalesi Inline Classes Make Great Database ID'lerde açıklandığı gibi Kotlin'in satır içi sınıflarıyla çalışmayı deniyorum :
@Entity
data class MyEntity(
@PrimaryKey val id: ID,
val title: String
)
inline class ID(val value: String)
Bu Odayı derlerken,
Kuruluşlar ve Pojos'un kullanılabilir bir kamu kurucusu olmalıdır. Boş bir kurucuya veya parametreleri alanlarla eşleşen bir kurucuya sahip olabilirsiniz (ada ve türe göre).
Oluşturulan Java koduna bakarak buldum:
private MyEntity(String id, String title) {
this.id = id;
this.title = title;
}
// $FF: synthetic method
public MyEntity(String id, String title, DefaultConstructorMarker $constructor_marker) {
this(id, title);
}
Gizemli bir şekilde varsayılan kurucu şimdi özel.
(Veya a ) String
için bir tür olarak kullanıldığında , oluşturulan Java sınıfı yapıcısı beklenen gibi görünür:id
typealias
public MyEntity(@NotNull String id, @NotNull String title) {
Intrinsics.checkParameterIsNotNull(id, "id");
Intrinsics.checkParameterIsNotNull(title, "title");
super();
this.id = id;
this.title = title;
}
Birisi şimdi Inline Classes'ı veri varlığı özellikleri olarak kullanırken varsayılan kurucuyu nasıl herkese açık tutmalı?