Вопрос относительно синтаксиса Java, используемого в разработке Android - PullRequest
0 голосов
/ 03 июня 2011

Я читал учебник для начинающих по разработке Android, в котором эта строка была написана:

TextView fortune = (TextView) findViewById(R.id.fortune_text);  

Я довольно новичок в Java, но я понимаю основы создания переменных. Итак, создаем новую переменную int:

int someInt = 4;

Выглядит немного иначе, чем то, что происходит выше. Итак, я предполагаю, что мы создаем экземпляр объекта TextView, а затем мы вызываем метод findViewById из класса TextView? Но почему (TextView) немного? Что мы говорим Java сделать здесь?

Ответы [ 5 ]

3 голосов
/ 03 июня 2011

Приведение в вашем примере связано с наследованием.Метод findViewById возвращает экземпляр / объект класса View - т.е. он возвращает представление / виджет.TextView, который является объектом, к которому вы хотите получить доступ, является подклассом View.Бит приведения - (TextView) - это ваш способ сообщить компилятору о ваших намерениях, то есть о том, что вы хотите получить доступ к расширенному набору методов, предоставляемых TextView, а не просто любым View.

Возможно, стоит проверить http://download.oracle.com/javase/tutorial/java/IandI/subclasses.html для получения более подробной информации.

1 голос
/ 03 июня 2011

По сути, левая часть оператора - это то, что вы присваиваете - правая часть (после =) - источник значения / объекта:

TextView fortune = (TextView) findViewById(R.id.fortune_text); 

В приведенной выше строке объявляется переменная объектатипа TextView и присваивает его возвращаемому методу findViewById(String).Часть (TextView) обеспечивает возврат метода cast к объекту TextView.Чтобы скопировать объект, вы можете написать:

TextView someFortune = fortune;

, что намного ближе к синтаксису вашей следующей строки (так как вы назначаете одинаковые / совместимые типы).

Следующеестрока:

int someInt = 4;

Объявляет int и просто присваивает его значение (без вызова метода).Поскольку "4" является int, нет необходимости явно приводить его тип (он все равно примитивен).

Обновление:

Объяснение приведения типа объекта:

http://www.javabeginner.com/learn-java/java-object-typecasting

1 голос
/ 03 июня 2011

Итак, я предполагаю, что мы создаем экземпляр объекта TextView, а затем вызываем метод findViewById из класса TextView?

Часть TextView fortune ничего не создает, просто объявляет переменную типа TextView.

Метод findViewById() возвращает экземпляр View, который является родительским классом всех виджетов. Чтобы использовать его как TextView, вы должны сначала разыграть его.

1 голос
/ 03 июня 2011

findViewbyId() возвращает класс View.TextView является подклассом View, и он преобразует его в TextView с частью (TextView).

0 голосов
/ 18 апреля 2014

Посмотрите на ответ geek_ji, опубликованный здесь "Зачем вам вообще нужен типотип" для очень простого понимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...