কোটলিনে জাভা স্থির চূড়ান্ত ক্ষেত্রগুলির সমতুল্য কত?


132

জাভাতে, একটি ধ্রুবক ঘোষণার জন্য, আপনি এমন কিছু করুন:

class Hello {
    public static final int MAX_LEN = 20;
}

কোটলিনে সমমান কী?


1
যেহেতু কোটলিনে ভ্যাল কেবল পাঠযোগ্যকে বোঝায়, এটি কি যথেষ্ট হবে না?
ইগোরগানাপলস্কি

উত্তর:


213

কোটলিন ডকুমেন্টেশন অনুসারে এটি সমতুল্য:

class Hello {
    companion object {
        const val MAX_LEN = 20
    }
}

ব্যবহার:

fun main(srgs: Array<String>) {
    println(Hello.MAX_LEN)
}

এছাড়াও এটি স্থিতিশীল চূড়ান্ত সম্পত্তি (গেটারের সাথে ক্ষেত্র):

class Hello {
    companion object {
        @JvmStatic val MAX_LEN = 20
    }
}

এবং অবশেষে এটি স্থির চূড়ান্ত ক্ষেত্র:

class Hello {
    companion object {
        @JvmField val MAX_LEN = 20
    }
}

প্রথম উদাহরণ (কনস্ট ফিল্ড সহ) বৈশিষ্ট্যের জন্য ব্যবহার করা যেতে পারে। জনপ্রিয় কেস: একক ফাইলে সমস্ত ওয়েব এপিআই পাথগুলি ঘোষণা করুন এবং এ জাতীয় কোড সহ নিয়ন্ত্রকদের থেকে এটি উল্লেখ করুন: "@RequestMapping (পথ = অ্যারেওফ (ওয়েবপ্যাথকন্ট্যান্টস.ম্যাপাপিপথ))" (স্প্রিং বুট বৈশিষ্ট্য)
মানুশিন ইগর

হাই বন্ধুরা! আপনি কি জানেন যে এই @ জেভিএমফিল্ডটি এখনও প্রয়োজনীয়? আমি এটিকে অ্যান্ড্রয়েডে ব্যবহার করছি এবং এটির পরিবর্তে "কনস্ট" ব্যবহার করা যেতে পারে এমন এক লিঙ্ক সতর্কতা দেখায়। আমি এটি কনস্টে পরিবর্তন করেছি এবং জাভা ক্লাস যে এটি ব্যবহার করছে তাতে কোনও সমস্যা নেই।
ওকাম্পো

1
@ ল্যান্ড্রো ওক্যাম্পো এটির ক্ষেত্রে এখনও আপনার প্রয়োজনীয় যদি আপনার স্থিতিশীল স্থির ক্ষেত্র থাকে, const val- সময় স্থির করুন এবং নিশ্চিতভাবে এটি @JvmField valকিছু ক্ষেত্রে প্রতিস্থাপন হিসাবে ব্যবহার করা যেতে পারে । এটির মাধ্যমে মান কার্যকর হয় না - রানটাইমে গণনা করা হয়, বা এটি আদিম ধরণের বা স্ট্রিং নয়। সূত্র: kotlinlang.org/docs/reference/...
রুসলান

36

যদি আপনার কোনও বাস্তবায়ন থাকে তবে একটি শ্রেণীর ভিতরে Helloব্যবহার করুনcompanion object

class Hello {
  companion object {
    val MAX_LEN = 1 + 1
  }

}

যদি Helloএকটি খাঁটি একক বস্তু হয়

object Hello {
  val MAX_LEN = 1 + 1
}

বৈশিষ্ট্যগুলি যদি সংকলন-সময় স্থির হয় তবে একটি constকীওয়ার্ড যুক্ত করুন add

object Hello {
  const val MAX_LEN = 20
}

আপনি যদি এটি জাভাতে ব্যবহার করতে চান তবে @JvmStaticটীকা যুক্ত করুন

object Hello {
  @JvmStatic val MAX_LEN = 20
}

1
সেরা উত্তর
rcorbellini

9

আমার জন্য

object Hello {
   const val MAX_LEN = 20
}

অনেক বয়লারপ্লেট ছিল। আমি স্ট্যাটিক চূড়ান্ত ক্ষেত্রগুলিকে আমার ক্লাসের উপরে সহজভাবে রেখেছি

val MIN_LENGTH = 10

class MyService{
}

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