我想知道为什么会失败:
assertEquals(Key.class, expectedKey.getClass());
Run Code Online (Sandbox Code Playgroud)
这不是:
assertTrue(expectedKey instanceof Key);
Run Code Online (Sandbox Code Playgroud)
这两者之间有真正的区别吗?
因为expectedKey很可能是Key 的子类的实例.您从失败的断言中获得的错误消息应告诉您.阅读.
"s"例如,是java.lang.Object的一个实例,但它的类不是java.lang.Object,它是java.lang.String.
因为expectedKey.getClass()给出了Class运行时类型的对象expectedKey,它可能与Key类不同.
但是,instanceof即使expectedKey运行时类型是类的某个子Key类,结果也是true,因为子类的实例也是instanceof超类.
| 归档时间: |
|
| 查看次数: |
13790 次 |
| 最近记录: |