সত্ত্বার ক্ষেত্র হিসাবে কোটলিন ইনলাইন ক্লাস সহ কক্ষের ডাটাবেস


9

আমি জ্যাক ওয়ার্টনসের নিবন্ধ ইনলাইন ক্লাসে গ্রেট ডাটাবেস আইডিগুলি তৈরি করুন কোটলিনের ইনলাইন ক্লাসগুলির সাথে রুম ( https://developer.android.com/topic/libraries/architecture/room ) কাজ পাওয়ার চেষ্টা করছি :

@Entity
data class MyEntity(
    @PrimaryKey val id: ID,
    val title: String
)

inline class ID(val value: String)

এই কক্ষটি সংকলন করার সময় এটি অভিযোগ করে

সত্তা এবং পোজগুলির অবশ্যই একটি ব্যবহারযোগ্য পাবলিক কনস্ট্রাক্টর থাকতে হবে। আপনার খালি কনস্ট্রাক্টর বা কনস্ট্রাক্টর থাকতে পারে যার প্যারামিটারগুলি ক্ষেত্রগুলির সাথে মেলে (নাম এবং প্রকারের মাধ্যমে)।

উত্পন্ন জাভা কোডটি আমি সন্ধান করছি:

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);
}

রহস্যজনকভাবে ডিফল্ট নির্মাণকারী এখন ব্যক্তিগত now

(বা ক ) Stringজন্য প্রকার হিসাবে ব্যবহার করার সময় , উত্পন্ন জাভা শ্রেণি নির্মাতাকে প্রত্যাশার মতো দেখায়:idtypealias

public MyEntity(@NotNull String id, @NotNull String title) {
  Intrinsics.checkParameterIsNotNull(id, "id");
  Intrinsics.checkParameterIsNotNull(title, "title");
  super();
  this.id = id;
  this.title = title;
}

কেউ কি এখন কীভাবে ডিফল্ট কনস্ট্রাক্টরকে সর্বজনীন রাখবেন যখন ডেটা সত্তার সম্পত্তি হিসাবে ইনলাইন ক্লাসগুলি ব্যবহার করার সময়?


আপনি কিছু ইস্যু ট্র্যাকার এ জন্য একটি সমস্যা উত্থাপন করেছেন? আমি অনুমান করি এটিকে অবশ্যই স্পষ্ট করে বলা দরকার
কে.ও.এস

উত্তর:


0

আমি বিশ্বাস করি এর কারণ হ'ল আইডি ক্লাসটি রানটাইমে স্ট্রিং হিসাবে উপস্থাপিত হবে। সুতরাং $ কনস্ট্রাক্টর_মার্কার অতিরিক্ত প্যারামিটারটি হ'ল মাইএনটিটির (স্ট্রিং আইডি, স্ট্রিং শিরোনাম) কনস্ট্রাক্টর স্বাক্ষরের স্বতন্ত্রতার গ্যারান্টি দেওয়া, কারণ এই কনস্ট্রাক্টরটি ইতিমধ্যে সংজ্ঞায়িত করা যেতে পারে। তবে আমি এখানেই অনুমান করছি।

আপনি কি MyEntity ক্লাসে এই নির্মাতাকে স্পষ্টভাবে সংজ্ঞায়িত করার চেষ্টা করতে পারেন এবং দেখুন যে এটি কাজ করে?


এই কন্সট্রাকটর ইতিমধ্যে স্পষ্ট সংজ্ঞায়িত করা হয় (কিন্তু অন্বিত চিনি সহ) মধ্যেdata class MyEntity(@PrimaryKey val id: ID, val title: String)
whlk

আপনি (আইডি, স্ট্রিং) পরামিতি সহ কোনও কনস্ট্রাক্টরকে সংজ্ঞায়িত করেছেন, আমি বোঝাচ্ছি (স্ট্রিং, স্ট্রিং) সহ একটি নির্মাণকারী। আমি চেষ্টা করেছি, তবে মনে হচ্ছে এটি সম্ভব নয়। আমি একটি "প্ল্যাটফর্ম ঘোষণার সংঘাত" ত্রুটি পেয়েছি।
দিয়েগো মারিন 21
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.