繁体   English   中英

Java强制转换方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM