В kotlin классе у меня есть параметр метода как объект (См. kotlin документ здесь) для типа класса T. Как возражают, что я передаю различные классы, когда я - вызывающий метод. В Java мы можем способный сравнить использование класса instanceof
из объекта, какой класс это.
Таким образом, я хочу проверить и выдержать сравнение во времени выполнения, какой Класс это?
Как я могу проверить instanceof класс в kotlin?
Можно проверить как это
private var mActivity : Activity? = null
затем
override fun onAttach(context: Context?) {
super.onAttach(context)
if (context is MainActivity){
mActivity = context
}
}
Другое решение: KOTLIN
val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container)
if (fragment?.tag == "MyFragment")
{}
Можно прочитать Документацию Kotlin здесь https://kotlinlang.org/docs/reference/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