我正在测试这行代码而我正在使用ClassCastException
:
final A a = (A) dao.fetchId(id);
A扩展了dao.fetchId
的回报。
以下是测试代码:
@Test
public void test() throws Exception {
final A a = new A();
final C c = new C();
c.setId(2L);
Mockito.when(dao.fetchId(Matchers.anyLong())).thenReturn(a);
target.someMethod(c, 2L, 2L, true, true);
}
答案 0 :(得分:0)
你的关系似乎倒退了。您说A
延伸C
,但您尝试将C
投放到A
。
人们可以将继承视为“是一种”关系。当你说一个类扩展另一个类时,你实际上是在说一个类“是”你继承的类。
例如,String
是 Object
,但Object
不一定是String
。
以下是代码中的内容。您可以从右到左阅读is-a关系。
Object string = "I'm a string!";
String object = (String) new Object(); // required to satisfy compilation
很难划分上下文,因为我们不知道你为什么要开始使用这个继承链。但是,对于这种情况,你应该返回你真正需要的课程。