Рубрики
Без рубрики

Что не означает в Java?

< T > – это обычная буква, обозначающая “Тип”, и она относится к концепции дженериков… С пометкой java, программирование.

< T > – это обычная буква, обозначающая “Тип”, и она относится к концепции Generics в Java. Вы можете использовать любую букву, но вы увидите, что буква “Т” широко предпочтительна.

ЧТО ОЗНАЧАЕТ GENERIC?

Generic – это способ параметризации класса, метода или интерфейса.

Давайте рассмотрим пример:

package Generics;

class House{

    T doorNumber;

    public House(T doorNumber) {
        this.doorNumber = doorNumber;
    }

    public void print(){
        System.out.println("Your house number is: " + this.doorNumber);
    }
}

  • У нас есть класс под названием “House”, который может принимать неопределенный тип объекта.
  • Затем у нас есть поле под названием номер двери, которое также может принимать любой тип объекта.
  • В конце мы объявляем параметризованный конструктор и выводим номер двери.

Короче говоря, пользователь может решить, является ли этот номер двери целым числом, строкой, плавающей точкой и т.д.

ПРИМЕЧАНИЕ : вы можете использовать только объекты. Примитивы не поддерживаются, поскольку дженерики предназначены для использования во время компиляции. Когда мы используем дженерики, T исчезает вместо всего, что может расширять класс объектов, а примитивы не обладают этой чертой.

Допустим, мы хотим, чтобы номер двери был строкой.

public class GenericsExample {
    public static void main(String[] args) {
        House mainHouse = new House<>("14a");
        mainHouse.print();

    }
}

Результатом было бы:

Your house number is: 14a

Мы заменили бы букву “T” на “String” и ввели бы номер дома в конструктор.

Мы можем использовать несколько типов, если, например, мы хотим, чтобы класс принимал более одного объекта. Мы можем добавить еще одну букву, чтобы сказать, что мы хотим, чтобы класс принимал другой универсальный.

package Generics;

class House{

    T doorNumber;
    V streetName;

    public House(T doorNumber, V streetName) {
        this.doorNumber = doorNumber;
        this.streetName = streetName;
    }

    public void print(){
        System.out.println("You live at: " + this.doorNumber + " " + this.streetName);
    }
}

public class GenericsExample {
    public static void main(String[] args) {
        House mainHouse = new House<>(14, "Tellson Avenue");
        mainHouse.print();

    }
}

Результатом было бы:

You live at: 14 Tellson Avenue

До сих пор мы видели примеры универсального использования на уровне класса. Но у нас также могут быть общие методы и интерфейсы.

Общий метод

package Generics;

class House{

    public  void print(T doorNumber){
        System.out.println("You live at house number: " + doorNumber);
    }

}

public class GenericsExample {
    public static void main(String[] args) {
        House mainHouse = new House();
        mainHouse.print(14);

    }
}

Метод принимает объект любого типа и выводит номер двери, который будет иметь любой тип объекта. В этом случае мы хотим, чтобы метод принимал целое число.

Результатом было бы:

You live at house number: 14

Универсальный интерфейс

Во-первых, создайте интерфейс.

package Generics;

interface Property{
    void hasBalcony(T balcony);
}

Затем реализуйте интерфейс.

package Generics;

public class House implements Property {

    @Override
    public void hasBalcony(String balcony) {
        System.out.println("Is there a balcony in the room? " + balcony);
    }

    public static void main(String[] args) {
        House mainHouse = new House();
        mainHouse.hasBalcony("YES");
    }

}

Результатом является:

Is there a balcony in the room? YES

Каковы преимущества использования дженериков?

  1. Улучшенная проверка во время компиляции : если вы используете тип объекта, отличный от указанного вами, компилятор сообщит вам об этом.
  2. Возможность повторного использования : вы можете использовать класс, метод или интерфейс несколько раз, потому что вы решаете, какой тип объекта применять, исходя из того, чего вы пытаетесь достичь.
  3. Это отлично подходит для структур данных и алгоритмов : ArrayList и Hashmap – это пара примеров, в которых используется Generic.

Вы дошли до конца этой статьи! Подпишитесь на мою рассылку новостей для получения дополнительных статей на эту и другие темы! 😊

Оригинал: “https://dev.to/maddy/what-does-t-mean-in-java-a2e”