Что означает следующая запись из исходного текста программы???
SimpleObject<T> getInstance();
Тип метода SimpleObject<T>
Но это же имя интерфейса, что это значит?
Anonymous #1576076
14 уровень
Что означает запись следующая запись из исходного текста программы??? SimpleObject getInstance();
Решен
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
8 декабря 2019, 21:04полезный
Тип возвращаемого объекта
+1
Anonymous #1576076
9 декабря 2019, 11:24
И этот тип - интерфейс???
0
Ksenia Volkova Java Developer в DXC Master
9 декабря 2019, 11:49решение
Да, а что в этом такого?
List, например, тоже интерфейс. Тебя удивит метод, который возвращает List?
Arrays.asList() к примеру
0
Anonymous #1576076
10 декабря 2019, 06:04
Вас видимо ничего не удивит. Но тем не менее это противоречит тому, что пишут в этом и других курсах - тому, что нельзя создать объект интерфейса.
+2
Anonymous #1576076
10 декабря 2019, 06:06
Не знаю, как вопрос пометился решенным - это не так.
0
Ksenia Volkova Java Developer в DXC Master
10 декабря 2019, 06:11
Нисколько не противоречит. Где тут создание объекта интерфейса?
Метод должен вернуть объект, реализующий этот интерфейс. Какая конкретно будет реализация - в данном случае не имеет значения.
+2
Anonymous #1576076
10 декабря 2019, 06:18
Похоже также, если углубиться в код интерфейса List и его реализаций, то можно найти, что метод Arrays.asList() будет возвращать именно реализацию интерфейса. (сам пока этого не увидел, прочитал пример). Противоречие в том, что вы называете тип объекта - интерфейс, а его тип будет - реализация интерфейса(по крайней мере в вашем примере). Спасибо большое за помощь. Видимо куда лучше изучать все возможную документацию, спасибо что помогли мне это лучше осознать.
0
Ksenia Volkova Java Developer в DXC Master
10 декабря 2019, 07:52
Здесь по-прежнему нет противоречия. Так работает ООП, и в частности наследование и полиморфизм.
Объект является экземпляром какого-то класса, но это не мешает работать с ним как с объектом родительского класса или как с объектом, реализующим интерфейс (причем конкретная реализация значения не имеет).
Если бы было не так, то в чем вообще был бы смысл интерфейсов?
У нас есть объект Integer, но все эти проверки вернут true 0