কোটলিনে "উদাহরণস্বরূপ" ক্লাসটি কীভাবে পরীক্ষা করবেন?


95

কোটলিন ক্লাসে, ক্লাসের ধরণের টির জন্য আমার কাছে অবজেক্ট হিসাবে পদ্ধতি প্যারামিটার রয়েছে (কোটলিন ডকটি এখানে দেখুন ) । অবজেক্ট হিসাবে আমি যখন বিভিন্ন পদ্ধতিতে কল করছি তখন আমি বিভিন্ন ক্লাস দিয়ে যাচ্ছি। জাভাতে আমরা কোন শ্রেণীর অবজেক্টের ব্যবহার করে ক্লাসের তুলনা করতে পারব ।instanceof

সুতরাং আমি যাচাই এবং রানটাইম তুলনা করতে চান এটি কোন ক্লাস?

instanceofকোটলিনে আমি কীভাবে ক্লাস চেক করতে পারি ?

উত্তর:


213

ব্যবহার is

if (myInstance is String) { ... }

বা বিপরীত !is

if (myInstance !is String) { ... }


15

isঅপারেটর বা তার অবহেলিত ফর্মটি ব্যবহার করে কোনও সময় রানটাইমে কোনও অবজেক্ট কোনও প্রদত্ত ধরণের সাথে সম্মতি দেয় কিনা তা আমরা পরীক্ষা করতে পারি !is

উদাহরণ:

if (obj is String) {
    print(obj.length)
}

if (obj !is String) {
    print("Not a String")
}

কাস্টম অবজেক্টের ক্ষেত্রে আরেকটি উদাহরণ:

আসুন, আমি একটি objটাইপ আছে CustomObject

if (obj is CustomObject) {
    print("obj is of type CustomObject")
}

if (obj !is CustomObject) {
    print("obj is not of type CustomObject")
}

4
এখানে অন্য একটি সুন্দর জিনিস নোট করুন: এর ব্লকের ভিতরে if, objস্বয়ংক্রিয়ভাবে কাস্ট করা হয় String। সুতরাং আপনি ব্লকের অভ্যন্তরে lengthস্পষ্টতই কাস্ট objকরার প্রয়োজন ছাড়াই যেমন সরাসরি ব্যবহার করতে পারেন properties String
জেস্পার

7

আপনি ব্যবহার করতে পারেন is:

class B
val a: A = A()
if (a is A) { /* do something */ }
when (a) {
  someValue -> { /* do something */ }
  is B -> { /* do something */ }
  else -> { /* do something */ }
}

3

অফিসিয়াল পৃষ্ঠা রেফারেন্স নামে কীওয়ার্ডটি ব্যবহার করে দেখুনis

if (obj is String) {
    // obj is a String
}
if (obj !is String) {
    // // obj is not a String
}

অফিসিয়াল ডকের সাথে উত্তর দেওয়া দুর্দান্ত জিনিস। তবে উত্তরে নমুনা কোড যুক্ত করা ভালতর অনুশীলন, লিঙ্কটি মারা গেলে এটি সহায়ক। উত্তর করার জন্য ধন্যবাদ.
pRaNaY

কেবলমাত্র সংযুক্ত উত্তরগুলি পছন্দ করা হয় না।
জেইসন মিনার্ড

0

আপনি এটি চেক করতে পারেন

 private var mActivity : Activity? = null

তারপর

 override fun onAttach(context: Context?) {
    super.onAttach(context)

    if (context is MainActivity){
        mActivity = context
    }

}

0

আপনি এখানে কোটলিন ডকুমেন্টেশন https://kotlinlang.org/docs/references/typecasts.html পড়তে পারেন । isঅপারেটর বা তার উপেক্ষিত ফর্মটি ব্যবহার করে রানটাইমের সময় কোনও বস্তু প্রদত্ত প্রকারের সাথে সামঞ্জস্য করে কিনা তা আমরা পরীক্ষা করতে পারি !is, উদাহরণস্বরূপ is:

fun <T> getResult(args: T): Int {
    if (args is String){ //check if argumen is String
        return args.toString().length
    }else if (args is Int){ //check if argumen is int
        return args.hashCode().times(5)
    }
    return 0
}

তারপরে মূল ফাংশনে আমি এটি প্রিন্ট করে টার্মিনালে দেখানোর চেষ্টা করি:

fun main() {
    val stringResult = getResult("Kotlin")
    val intResult = getResult(100)

    // TODO 2
    println(stringResult)
    println(intResult)
}

এটি আউটপুট

6
500

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.