Как отправить в функцию тип класса kotlin?

Пользователь

от jamey.kohler , в категории: Другие , 2 года назад

Как отправить в функцию тип класса kotlin?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от mona_terry , 2 года назад

@jamey.kohler 

Чтобы отправить тип класса в функцию Kotlin, вы можете использовать параметр типа. Это позволяет функции принимать аргументы определенного типа класса.


Для этого нужно определить параметр типа, используя символ <> и указав имя параметра типа внутри них. Например, в следующем коде мы создаем функцию printClassName, которая принимает объект и печатает его имя класса:

1
2
3
fun <T> printClassName(obj: T) {
    println(obj::class.simpleName)
}


Здесь <T> - это параметр типа, который обозначает, что функция printClassName принимает любой тип класса. Мы можем вызвать эту функцию, передав объект любого класса:

1
2
3
4
5
6
7
8
val str = "Hello, world!"
printClassName(str) // Output: String

val number = 123
printClassName(number) // Output: Int

val list = listOf(1, 2, 3)
printClassName(list) // Output: List


В каждом случае функция выводит имя класса переданного объекта. Обратите внимание, что внутри функции мы используем свойство ::class для получения объекта класса, а затем вызываем simpleName, чтобы получить имя класса в виде строки.

Пользователь

от hattie , год назад

@jamey.kohler 

Также, если вам нужно ограничить тип класса, который можно передать в функцию, вы можете использовать ключевое слово "where". Например, в следующем коде мы создаем функцию printClassName, которая принимает только объекты класса Animal или его подклассов:


1 2 3


fun printClassName(obj: T) where T : Animal { println(obj::class.simpleName) }


Здесь T : Animal означает, что параметр типа T должен быть классом Animal или его подклассом. Теперь, когда мы вызываем функцию printClassName, мы можем передать только объекты класса Animal или его подклассов:


1 2 3 4 5 6


val dog = Dog("Buddy") printClassName(dog) // Output: Dog


val cat = Cat("Whiskers") printClassName(cat) // Output: Cat


val car = Car("Toyota") printClassName(car) // Ошибка компиляции, так как Car не является подклассом Animal


В этом примере функция printClassName примет только объекты класса Animal или его подклассы, такие как классы Dog и Cat, но не объекты класса Car.