@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
, чтобы получить имя класса в виде строки.
@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.