将对象从父类转换为子类

mwb:

我对用Java语言进行类型转换有误解。问题是ClassCastException例如,在此代码中,假设Animal是Dog类的父类,

动物动物= new Animal(); 
狗狗=(狗)动物;

执行后抛出ClassCastException但是,在研究android程序包时,我发现了一个有关类型转换的示例,考虑到该Java示例,应该抛出ClassCastException

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

在此代码中,findViewById方法返回一个View类对象,该对象是EditText的超类之一。(从android.view.Viewandroid.widget.EditText)该代码运行良好。谁能解释我是否犯了错或如何发生?

提前致谢。

他们是 :

创建对象后,就无法更改其类型。这就是为什么您不能将动物投向狗的原因。

但是,如果创建子类的对象,则可以在超类类型的变量中保留对它的引用,然后将其转换为子类类型。

这将起作用:

Animal a = new Dog ();
Dog d = (Dog) a;

在Android示例中,您具有一个如下所示的布局资源:

<EditText
    android:id="@+id/edit_message"
 ..."/>

此定义将导致Android创建的实例EditText,因此您可以将返回的视图转换findViewByIdEditText您不能将其转换为不是的超类型的其他任何对象EditText

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章