public void info(Object s) {
System.out.println(String.format("Дерево № %d , метод %s, параметр %s",
number,
(s instanceof String) ? "String" : (s instanceof Number) ? "Number" : "Object",
s.getClass().getSimpleName()));
}
но String еще перехватывает а вот Object уже нет :(Николай Довгаль
26 уровень
А можно ли instanceof ?
Решен
Комментарии (13)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
--------Master
24 декабря 2018, 13:55
Попробуй добавить такие выводы для наглядности.
Но валидатор ожидает, что передача параметров разных классов (включая приведение) будет именно задействовать разную логику, а у тебя получается наоборот - логика сама решает, какой параметр ей передан
0
Николай Довгаль
25 декабря 2018, 16:50
не понял в чем наглядность ?
метод Object по всем трем пунктам
0
--------Master
25 декабря 2018, 18:45
Как расшифровал бессвязный набор слов про какие-то перехваты стрингов-объектов, так и попытался ответить.
0
Николай Довгаль
25 декабря 2018, 18:57
Это вопрос по задаче, как не странно.
Про то как можно получить тип передаваемого обьекта и проблема получить Object
И если не запустить код я думаю ответить вразумительно не получится
0
--------Master
25 декабря 2018, 19:10
Ну я привел пример, как получить вывод Object, и перед выкладыванием на всякий запускал и проверял, что выводится. А если речь о том, чтобы именно определять, с параметром какого типа вызван метод - он у тебя как раз и объявлен так, что всегда и в любом случае параметры приводятся к классу Object, никакие методы "родных" классов без явного приведения этим параметрам внутри метода не доступны.
0
Николай Довгаль
25 декабря 2018, 19:22
ок вопрос конкретизиру почему
Вывод:
Дерево № 1 , метод Object, параметр Integer
Дерево № 2 , метод Object, параметр Short
Дерево № 3 , метод Object, параметр BigDecimal
Вывод:
Дерево № 1 , метод Number, параметр Integer
Дерево № 2 , метод Number, параметр Short
Дерево № 3 , метод Number, параметр BigDecimal
Когда явно указано приведение типов к (Object), я понимаю что Number это наследник Object но есть ли способ решить эту задачу через instanceof 0
--------Master
25 декабря 2018, 19:33
instanceof как раз позволяет получать данные о реальном классе объекта, даже если он сохранен в переменной Object, а в соответствии с объявлением твоего метода все передаваемые в него параметры именно в Object и сохраняются.
Эту задачу таким способом решить не получится, я уже вчера написал, почему: здесь как раз требуется различное поведение в зависимости от задаваемых, а не реальных классов параметров.
0
Роберт
18 марта 2019, 07:02
подскажи пожалуйста, что эта конструкция означает - new Tree().info((Object)new Integer("4"));
0
--------Master
18 марта 2019, 07:13
Создается объект Integer со значением 4, приводится к типу Object, для этого объекта вызывается метод info у нового объекта класса Tree
0
Николай Довгаль
18 марта 2019, 07:15
new Tree() - создание обьекта класса Tree, потом вызов метода info этого класса с параметром в виде обьекта класса Integer и передачай в конструктор этого класса строки "4" с последующим преведение типа этого обьекта (Integer) к Object
0
Роберт
18 марта 2019, 07:27
СПАСИБО!!!
0
Илья228
24 декабря 2018, 11:54
Там все решается гораздо легче...
Необходимо перегрузить метод info, а ты хочешь в рамках одного все поймать как будто
0
Николай Довгаль
24 декабря 2018, 13:45
Задачу я решил перегрузкой, я интересуюсь почему не получается отловить Object
0