मैं कोटलिन की इनलाइन कक्षाओं के साथ कमरा ( https://developer.android.com/topic/lbooks/altecture/room ) काम पाने की कोशिश कर रहा हूं जैसा कि जेक व्हार्टन के लेख इनलाइन क्लासेस मेक ग्रेट डेटाबेस आईडी में वर्णित है :
@Entity
data class MyEntity(
@PrimaryKey val id: ID,
val title: String
)
inline class ID(val value: String)
संकलन करते समय इस कक्ष की शिकायत है
संस्थाओं और Pojos एक उपयोगी सार्वजनिक निर्माण होना चाहिए। आपके पास एक खाली कंस्ट्रक्टर या एक कंस्ट्रक्टर हो सकता है, जिसके पैरामीटर फ़ील्ड (नाम और प्रकार से) से मेल खाते हैं।
उत्पन्न जावा कोड को देखकर मुझे लगता है:
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);
}
रहस्यमय तरीके से डिफ़ॉल्ट निर्माता अब निजी है।
जब (या a ) के String
लिए एक प्रकार के रूप में उपयोग किया जाता है , तो उत्पन्न जावा वर्ग निर्माता अपेक्षित दिखता है: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;
}
क्या अब कोई व्यक्ति इनलाइन क्लासेस को डेटा एंटिटी प्रॉपर्टी के रूप में इस्तेमाल करते हुए डिफॉल्ट कंस्ट्रक्टर को कैसे सार्वजनिक रख सकता है?