java - 如何理解 "(Editable) super.getText();"

标签 java android operator-precedence

Editable是一个接口(interface),下面的代码是EditText类的一个方法,在android源码中显示:

public Editable getText() {
    return (Editable) super.getText();
}

我想说清楚如何理解代码(Editable)super.getText(),我有两种理解代码行的方法:

1.cast EditTextsuper类(EditText的父类(super class)是TextView)为Editable,然后调用getText()方法使用 可编辑,

2.使用父类(TextView)调用getText()方法,然后将返回类转换为Editable

哪个是对的?根据运算符的优先级,运算符() . 都具有最高的优先级,结合性是左的,所以想到的可能是第一种方式是右的。但这让我更加困惑。你知道吗,EditText 的父类(super class)是 TextView,我做了一个从 TextViewEditable 的转换? TextViewEditable没有关系,怎么转换成功?

最佳答案

TextView has nothing to do with Editable, how can it cast successfully?

TextView.getText()的返回类型是CharSequenceEditableCharSequence的子类>.

因此...

return (Editable) super.getText();

...只是将 CharSequence(通过调用 super.getText() 返回)转换为 Editable

关于java - 如何理解 "(Editable) super.getText();",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9245792/

相关文章:

php - 如何使用您的Tube API搜索可以在手机上播放的视频

android - 如何在 NavGraph 组件之间共享 View 模型(仅限)

Java8 : Why a lambda expression could do a logical and(or) with boolean

java - 在 HashMap 中使用 ComputeIfAbsent

java - 我的单例模式实现错误

android - 如何从印度销售 android 应用程序?

c - 后缀 prefix++ 和二进制 & 运算符的优先级

java - 我如何在Java中将外部数据放入数组中

java 正则表达式用空格分割字符串(除非左边和右边都是数字或 - )

c++ - 关于运算符 -> 和 () 的评估顺序