java - 为什么我需要为 EditText.getText() 创建一个对象?

标签 java android

我目前正在 Android-Studio 中研究 Java。 我偶然发现了一个我不明白的现象。当我尝试调用 EditText 类的 getText() 时,我首先需要创建 EditText 类的实例。有人可以解释这是为什么吗?

这个有效:

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

这不是:

findViewById(R.id.editText).getText();

最佳答案

那是因为View#findViewById返回的对象类型是通用的,通常会自动转换为引用类型(在您的情况下为 EditText)(如果给定的话)。

引用文档:

Note: In most cases -- depending on compiler support -- the resulting view is automatically cast to the target class type. If the target class type is unconstrained, an explicit cast may be necessary.

如果您的编译器不知道 findViewById(R.id.editText)EditText 类型,它将不允许您调用 getText(即 android.view.View 没有 getText 方法)。

关于java - 为什么我需要为 EditText.getText() 创建一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56132635/

相关文章:

java - Getter 属性(没有属性和 setter)通过 ValueStack 访问

android - 在 GoogleFit 中添加/读取体重和高度?安卓

java - 16 位位深

java - 如何在 SWT/Java 应用程序中禁用 Mac 操作系统中的全屏按钮?

java - 在 android 上具有授权的 HTTP POST 请求

android - 显示加载对话框,直到网页在 WebView 中完全加载

android - 音频流重新录制导致回声

java - 使用 Spring Util Schema 覆盖应用程序上下文中的 Bean 设置

java - 使用离线 gradle 运行标准 java 项目时出现 Android Studio 错误

android - 如何设置android接近警报的准确性