这个java代码有什么作用?

时间:2013-10-12 10:32:19

标签: java android class object

我刚刚遇到过一些我以前从未见过的语法,因为在Google上找到答案很难,我决定提问。 有关的陈述是:

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

我知道代码正在创建EditText类的对象“editText”,但我从未见过之前等号的代码。 我最好的猜测是它正在运行方法findViewById(),并且此消息存在于EditText类中,这就是为什么括号中的EditText是必要的?

我知道我现在可能应该知道这种语法,因为我刚刚在CS大学完成了我的第一个java课程,但不幸的是我们从未被介绍过这样的东西。

非常感谢。

3 个答案:

答案 0 :(得分:2)

这是一个类型转换,强制编译器假定函数findViewById返回的结果是EditText对象。

如果是另一种类型,则会出现运行时错误。

Here's the offical docs on the subject.

答案 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中。