public class Types extends Object
public static <T> T cast(Object o)
一些泛型类,如果需要进行转换,
使用 Class.cast(Object) 将无能为力,
使用 Types#cast(Object) 可以很方便地支持泛型类的转换。
如 Optional<String> 的转换,
通过 Optional.class#cast(Object) 可以转换成Optional,但是泛型的String无法体现;
通过 Types.<Optional<String>>cast(Object) 可以很方便地支持 Optional<String> 的转换。
Note: 在赋值给变量的时候,由于有上下文的类型推导,可以很方便的写成如下:
Object o = ...;
// 之前的写法
Optional<String> opt = (Optional<String>) o;
// 现在的写法
Optional<String> opt = Types.cast(o);
可以看到,新的写法规避了 Optional<String> 的2次出现,其可以通过需要赋值的类型进行类型推导public static <T> Class<T> getClass(T t)
Copyright © 2021. All rights reserved.