How to check “instanceof ” class in kotlin?

后端 未结 8 1540
有刺的猬
有刺的猬 2020-12-14 05:14

In kotlin class, I have method parameter as object (See kotlin doc here ) for class type T. As object I am passing different classes when I am calling metho

相关标签:
8条回答
  • 2020-12-14 05:40

    Other solution : KOTLIN

    val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container)
    
    if (fragment?.tag == "MyFragment")
    {}
    
    0 讨论(0)
  • 2020-12-14 05:42

    We can check whether an object conforms to a given type at runtime by using the is operator or its negated form !is.

    Example:

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

    Another Example in case of Custom Object:

    Let, I have an obj of type CustomObject.

    if (obj is CustomObject) {
        print("obj is of type CustomObject")
    }
    
    if (obj !is CustomObject) {
        print("obj is not of type CustomObject")
    }
    
    0 讨论(0)
  • 2020-12-14 05:49

    Try using keyword called is Official page reference

    if (obj is String) {
        // obj is a String
    }
    if (obj !is String) {
        // // obj is not a String
    }
    
    0 讨论(0)
  • 2020-12-14 05:50

    You can read Kotlin Documentation here https://kotlinlang.org/docs/reference/typecasts.html . We can check whether an object conforms to a given type at runtime by using the is operator or its negated form !is, for the example using 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
    }
    

    then in main function i try to print and show it on terminal :

    fun main() {
        val stringResult = getResult("Kotlin")
        val intResult = getResult(100)
    
        // TODO 2
        println(stringResult)
        println(intResult)
    }
    

    This is the output

    6
    500
    
    0 讨论(0)
  • 2020-12-14 05:56

    Combining when and is:

    when (x) {
        is Int -> print(x + 1)
        is String -> print(x.length + 1)
        is IntArray -> print(x.sum())
    }
    

    copied from official documentation

    0 讨论(0)
  • 2020-12-14 05:56

    You can check like this

     private var mActivity : Activity? = null
    

    then

     override fun onAttach(context: Context?) {
        super.onAttach(context)
    
        if (context is MainActivity){
            mActivity = context
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题