Ограничения типов в Kotlin: как ограничить типы аргументов

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

  1. Использование верхней границы:

    fun <T : Number> printNumber(value: T) {
       println(value)
    }

    В этом примере функция printNumberпринимает аргумент типа T, который должен быть подтипом Number. Это означает, что вы можете передать в качестве аргумента любой подкласс Number, например Int, Doubleили Float.

  2. Использование нескольких верхних границ:

    fun <T> printElement(value: T) where T : CharSequence, T : Comparable<T> {
       println(value)
    }

    Здесь функция printElementпринимает аргумент типа T, который должен реализовывать как CharSequence, так и Comparableинтерфейсы.

  3. Использование определенного класса:

    fun <T : MyClass> processObject(obj: T) {
       obj.doSomething()
    }

    В этом случае функция processObjectпринимает аргумент типа T, который должен быть подклассом MyClass.

Используя ограничения типа, вы гарантируете, что аргумент, передаваемый этим функциям, удовлетворяет указанным требованиям типа. Это помогает обеспечить безопасность типов и позволяет компилятору обнаруживать потенциальные ошибки, связанные с типами, во время компиляции.