|
|
1
3
您可以选择:对已知将始终成功的强制转换取消警告,或者避免警告,并通过try/catch块验证强制转换是否成功。 只有这两种选择。
在你的情况下,我想说你有几个选择。
我想你最好的办法是加一个
你可以用一个空的catch块来吞下这个异常;坦率地说,我更喜欢@suppresswarning。 或者您可以完全放弃该方法,只处理抽象实体,从而有效地使存储库的使用者处理强制转换。 底线:每当您试图构建通用存储库时,都会遇到这些问题。对于每个实体类型模式,使用一个具体的存储库可能会更好。 |
|
2
1
您可以通过使类成为泛型来避免未选中的强制转换,例如
|
|
|
3
1
首先,您的代码不是类型安全的。它可以在运行时引发类强制转换异常。你应该有 private void saveConcreteDOs(AbstractDO[] theEntities) {
entityMap.put(theEntities.getClass().getComponentType(), theEntities);
}
运行时只能有同构数组,元素[0]的类型与数组组件类型相同。然而,单凭这门课的考试是不可能知道这一点的。
有了这个修正后的代码,超级智能编译器就可以证明
一般来说,没有办法在Java中表达更复杂的键和值之间的关系。不变量,即一个值是一个组件类型为键的数组,只在您的头中维护。 现在,看看这个非数组版本:
这没有警告,但有点作弊。
它对数组版本没有帮助,没有
或者你可以这样做,但这确实是不必要的俗气。如果您知道自己在做什么,并且仔细检查了程序以确保类型安全,那么不要害怕未选中的强制转换警告。
|
|
|
DutChen18 · 如何在C宏中内联触发隐式指针转换? 1 年前 |
|
|
0xDED · 如何将泛型类强制转换为对象的泛型类? 2 年前 |
|
|
Niclas · 变量>-1如何在C中精确求值? 2 年前 |
|
|
Textime · 将Varchar2转换为时间 2 年前 |
|
|
xpt · Go,无法将类型*int32转换为类型*int64 2 年前 |