Почему две данных реализации работают? В чем их принципиальное отличие?
По реализации №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;
}
По реализации первой возвращается(и передается в качестве параметра) объект 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;
}
}
Если что непонятно, спрашивайте.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Всем привет:) Не могу фон сделать под размер страницы, постоянно фон как бы не помещается на страницуВсе говорят про background-size: cover; Но он у меня...
У меня есть скрипт для анимации текста при наведении на елемент: