[英]Java cast method
我不确定这个问题是否属于这里。 我编写了以下方法将对象强制转换为特定类型。
private static <T> T cast(Object obj) {
return (T) (obj);
}
我想知道为什么我在Guava或Apache Commons中找不到这样的方法? 我错过了什么吗?
谢谢,
Venk
你可以用方法使用标准施法
SomeClass o = SomeClass.class.cast(obj);
没理由使用你的方法
SomeClass o = Utils.<SomeClass>cast(obj);
因为它不是typesave。 特别是Guava旨在最大限度地利用javas静态类型。 使用您的方法,可以将任何类的对象强制转换为任何其他类的对象。 这不应该做。
如果你想尝试以下
Integer a = (Integer) "1";
编译器会理所当然地抱怨。 如果你使用你的强制转换方法,你只需要摆脱编译错误并将错误推迟到运行时。 这绝不是一个好主意。 此外,编译器会警告您未选中对T的强制转换,以后可能会导致问题。
在大多数情况下,java类型推断非常可靠,您应该听编译器警告。
另一方面,反射几乎完全抛弃了java类型系统。 处理这个有点棘手,但有办法检查类型是否兼容(例如Class.isAssignableFrom(Class)
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.