2013-10-12 3 views
-1

Я только что наткнулся на какой-то синтаксис, которого я никогда раньше не видел, и потому, что найти ответы на Google довольно сложно, я решил задать вопрос. Заявление о котором идет речь:Что делает этот код Java?

EditText editText = (EditText) findViewById(R.id.edit_message); 

Я знаю, что код создает объект «EditText» класса EditText, но я никогда не видел код после знака равенства перед. Моя лучшая догадка заключается в том, что он запускает метод findViewById() и что это сообщение присутствует в классе EditText, поэтому необходим EditText в круглых скобках?

Я знаю, что, вероятно, должен знать этот синтаксис, так как я только что закончил свой первый курс java в колледже CS, но, к сожалению, мы никогда не были знакомы с чем-то подобным.

спасибо.

+2

http://developer.android.com/reference/android/app/Activity.html - это первый ответ здесь для 'findViewById', и стоит прочитать, если вы хотите попасть в развитие Android. –

+0

Это синтаксис android для поиска элементов, которые были объявлены в XML-файле. Я предлагаю вам пройти через developer.android.com, чтобы изучить программирование на Android, по крайней мере, чтобы вы познакомились с этим синтаксисом. –

+0

Я думаю, что EditText - это класс, а findViewbyId должен возвращать то, что нужно отнести к классу EditText. – Miller

ответ

2

Это тип, заставляющий компилятор предполагать, что результат, возвращаемый функцией findViewById, является объектом EditText.

Если это другой тип, вы получите ошибку времени выполнения.

Here's the offical docs on the subject.

+0

Большое спасибо за объяснение и ссылку на документацию :) – user680881

+0

Я бы добавил, что это работает только в том случае, если EditText является подклассом View, который является типом, возвращаемым findViewById; иначе компилятор выдаст ошибку, так как он знает тип, возвращаемый методом. И еще один способ поставить «заставить компилятор предположить, что» будет «сообщать компилятору о необходимости», – arcy

0

Он используется для создания текстового поля, в котором вы можете ввести запрос, в этом коде findviewbyid является метод, который возвращает объект, в то время как (EditText) используется для литья и, как здесь возвращаемый объект имеет type edittext, поэтому мы сохраняем переменную edittext типа EDITTEXT.

2

findViewById возвращает View, так

EditText editText = findViewById(R.id.edit_message); 

выбросит компиляции исключение, сообщающее, что вы не можете назначить View к EditText переменной.

(EditText) бросает View типа в EditText, другими словами, компилятору, что это безопасно, чтобы присвоить результат findViewById к EditText, как вы ожидаете, что edit_message вид на самом деле EditText объект.

Наконец, если вы «лжете» компилятору, а edit_message - это не EditText, вы сможете скомпилировать и запустить, но вы получите ClassCastException.