Дженерики, метод of

288
12 декабря 2021, 12:30

Почему две данных реализации работают? В чем их принципиальное отличие?

По реализации №1 - возвращается экземпляр класса Pair с переменными переданными методу of

По реализации №2 создается новый экземпляр класса Pair и двум полям класса присваиваются значения объектов и потом возвращается созданный экземпляр класса.

правильно ли я это понимаю?

Реализация №1:

public static <T, M> Pair<T, M> of(T first, M second) {
    return new Pair<>(first, second);
}

Реализация №2:

static Pair of(Object a, Object b) {
    Pair pair = new Pair();
    pair.t1 = a;
    pair.t2 = b;
    return pair;
}
Answer 1

По реализации первой возвращается(и передается в качестве параметра) объект Pair(с дженериками), для которого были указаны все дженерики в качестве параметров конструктора. Например:

Pair test = new Pair<>(new Object()/*явно указали тип T!*/, new String("2")/*явно указали тип Y!*/); 
...
class Pair<T, Y>{
    T Te;
    Y Ye;
    Pair(T Te, Y Ye){
        this.Te = Te;
        this.Ye = Ye;
    }
}

Во второй же реализации это обычный объект Pair(без дженериков). Например:

Pair test = new Pair(new Object(), new Object()); 
...
class Pair{
    Object Te;
    Object Ye;
    Pair(Object Te, Object Ye){
        this.Te = Te;
        this.Ye = Ye;
    }
}

Если что непонятно, спрашивайте.

READ ALSO
Помощь с версткой блоков

Помощь с версткой блоков

Как сверстать эти блоки на чистом html и css?

136
Фон картинкой в CSS

Фон картинкой в CSS

Всем привет:) Не могу фон сделать под размер страницы, постоянно фон как бы не помещается на страницуВсе говорят про background-size: cover; Но он у меня...

189
Реализация нестандартной тени в css!

Реализация нестандартной тени в css!

Обнаружил на макете вот такую тень

210
Проблема со скриптом для анимации jQuery

Проблема со скриптом для анимации jQuery

У меня есть скрипт для анимации текста при наведении на елемент:

121