Вы забываете, что наш флуд в теме следствие, а не причина моих тут разглагольствований. В контексте вопроса это не причина для ошибки и ошибки тут не будет
Я тут перечитал что я написал. И да, действительно я неправильно сказал, сказав что будет ошибка
Дело может не в этом, но поиск кнопки таким образом, которым Вы ищете приведет к ClassCastException, к гадалке не ходи.
Но вот то что
altwin писал(а):m090050 писал(а):View btn = findViewById(R.id.button1);
Может всё таки так?
[syntax=java5]Button btn = (Button) findViewById(R.id.button1);[/syntax]
это странно, но допустимо и ошибку компиляции не вызывает. Только не спрашивайте зачем человек мог такое написать, другое дело,
что указание (Button) в данном случае излишне, система сама определит тип.
То, что система сама определит тип и автоматически приведет переменную к Button типу, которая определена как View, это что-то из серии фантастики.
Опять же Button лишь класс реализованный в Android framework, и ошибка в данном случае будет вызванна не потому, что я не привел явно тип, а потому, что в данном случае в объекте View может быть не реализован метод спецефичный для класса фреймворка.
Что значит "может быть не реализован"? А может и реализован? А что если унаследуюсь и не буду ничего реализовывать? Ошибка будет? По вашей логике она не должна быть, по моей
должна.
Повторю далеко не я один придерживаюсь точки зрения, что в java псевдо строгая типизация и данном случае выполняя проверку типа - обект View -является объектом Button
Да ни откуда. Ошибки не будет, как я сказал в этом посте. не знаю как я написал что она будет. И также не будет неявного преобразования к Butoon (View не может неявно привестись к Button).
Она не будет только переменно типа Object, а будет еще их ссылкой на ArrayList поддерживающий те же методы но реализация, это ваша проблема. Так и Button без явного приведения лишь говорит о не соответствии типа объекта, ссылкой на которы есть переменная.
Т.е. написали мое тоже самое, почти теми же словами. Уже хорошо. То что она является ссылкой... Ну даже не знаю. Я не счел нужным указывать на это, ибо думал не стоит говорить о том, что объекты всегда работают по ссылке.
Еще раз повторюсь. Вы же пишете о том, что можно с суперкласса без явного преобразования прыгнуть к наследнику. Это неверно.
P.S. с телефона писать очень не удобно
Не пишите с телефона =)