我正在测试这一行代码,我有一个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);
}发布于 2014-09-10 07:18:15
你们的关系似乎是颠倒过来的。您说A扩展了C,但您正在尝试将C转换为A。
人们可以把继承看作是一种关系。当您说一个类扩展了另一个类时,您实际上是在说类“是”您继承的类。
例如,String 是 Object,但Object不一定是String。
下面是代码中的内容。你可以从右到左阅读is-一种关系。
Object string = "I'm a string!";
String object = (String) new Object(); // required to satisfy compilation这是很难预测的背景,因为我们不知道为什么你有这个继承链开始。但是,在这种情况下,您应该返回真正需要的类。
https://stackoverflow.com/questions/25759306
复制相似问题