在 Java (Android) 中,我有一些看起来像这样的代码:
for (Tuple tuple : xRange) {
Tuple5<Integer, Integer, Double, Double, Double> t = (Tuple5<Integer, Integer, Double, Double, Double>)tuple;
...
}
写起来可能很痛苦。顺便说一下,Tuple5 派生自 Tuple。
所以我写了这个方法:
@SuppressWarnings("unchecked")
public static final <U1, U2 extends U1> U2 cast(U1 inst) {
return (U2)inst;
}
看起来很恶心吧?但这让我可以像这样重写代码:
for (Tuple tuple : xRange) {
Tuple5<Integer, Integer, Double, Double, Double> t = cast(tuple);
...
}
我正在使用 AIDE 编译器在 Android 上进行编译。我认为它甚至可能无法在其他系统上编译。
我的问题是这适用于所有编译器吗?是坏代码吗?而且,如果是,那为什么?
谢谢