Java Android ScrollView中的ClassCastException

Java Android ScrollView中的ClassCastException,java,android,inheritance,multi-level,Java,Android,Inheritance,Multi Level,在我的项目(B)中有一个类,它扩展(而不是直接扩展)了ScrollView(a),可用于在垂直的月份字段scroll中设置值 以下是遗产继承权: B扩展了D,D扩展了抽象类E,E扩展了A 我使用的是robotium方法,它获取当前活动中的所有滚动视图,并返回滚动视图的ArrayList(ArrayList) 我正在尝试分配该arraylist arraylist.get(0)的第一个元素,并尝试将其强制转换为B对象,操作如下: ScrollView scrview = new ScrollVi

在我的项目(B)中有一个类,它扩展(而不是直接扩展)了ScrollView(a),可用于在垂直的月份字段scroll中设置值

以下是遗产继承权: B扩展了D,D扩展了抽象类E,E扩展了A

我使用的是robotium方法,它获取当前活动中的所有滚动视图,并返回滚动视图的ArrayList(ArrayList)

我正在尝试分配该arraylist arraylist.get(0)的第一个元素,并尝试将其强制转换为B对象,操作如下:

ScrollView scrview =  new ScrollView(a.getApplicationContext());
ChildScrollView scrview1 = new ChildScrollView(a.getApplicationContext());

scrview = solo.getScrollViews().get[0];
scrview1 = (ChildScrollView) scrview; // I get the classcastexception here
有没有办法绕过这个问题

我也试过了

ChildScrollView scrview1 = new ChildScrollView(a.getApplicationContext());
ScrollView scrview =  (ScrollView)new childScrollView(a.getApplicationContext());
//Also tried this --> ScrollView scrview = (ScrollView) scrview1;

scrview = solo.getScrollViews().get[0];
scrview1 = (ChildScrollView) scrview; // I get the classcastexception here

任何帮助都将不胜感激。如果我遗漏了什么,请告诉我。

您会遇到一个例外,因为演员不能像那样工作。这样想:所有
ChildScrollView
也都是
ScrollView
,因此在
ScrollView
上下文中使用它们是有意义的。但是
ScrollView
对象可能是也可能不是
ChildScrollView


您可以使用在强制转换之前尝试在运行时确定对象的类,以确保强制转换是安全的。但是,我不确定您想用上面的代码实现什么。您创建了一个由
scrview1
引用的新对象,但随后立即将该变量分配给
scrview
?你能提供更多关于你想要完成什么的详细信息吗?

类可以被转换为它们继承的类,而不是相反的方式。我正在使用robotium编写一个脚本,它将使用子类中的方法单击滚动列表中的特定值,滚动列表可以上下滚动。但是,我只能在父对象中获取滚动视图。然后,子类有一个方法setMonth(int pos),该方法将把月份设置为父类中不存在的参数中的pos。此外,我还尝试查看(父类的子实例)是否有效,并返回true。最后,我迭代了不同的滚动视图,并使用具有模板参数(类)的方法获取了相应的视图