我刚刚遇到过一些我以前从未见过的语法,因为在Google上找到答案很难,我决定提问。 有关的陈述是:
EditText editText = (EditText) findViewById(R.id.edit_message);
我知道代码正在创建EditText类的对象“editText”,但我从未见过之前等号的代码。 我最好的猜测是它正在运行方法findViewById(),并且此消息存在于EditText类中,这就是为什么括号中的EditText是必要的?
我知道我现在可能应该知道这种语法,因为我刚刚在CS大学完成了我的第一个java课程,但不幸的是我们从未被介绍过这样的东西。
非常感谢。
答案 0 :(得分:2)
这是一个类型转换,强制编译器假定函数findViewById
返回的结果是EditText
对象。
如果是另一种类型,则会出现运行时错误。
答案 1 :(得分:2)
findViewById
会返回View
,所以
EditText editText = findViewById(R.id.edit_message);
会抛出一个编译异常,告诉您无法将View
分配给EditText
变量。
(EditText)
将View
类型转换为EditText
,换句话说,您告诉编译器将findViewById
的结果分配给EditText
是安全的},因为您希望edit_message
视图实际上是EditText
对象。
最后,如果你对编译器'撒谎'并且edit_message
不是EditText
,你就可以编译并运行,但是你会得到一个{{1} }。
答案 2 :(得分:0)
它用于创建可以在其中键入查询的文本框,在此代码中,findviewbyid是一个返回对象的方法,而(EditText)用于转换,因为返回的对象属于edittext类型,这就是为什么我们是保存在EDITTEXT类型的变量edittext中。