相当于 Java 中的 C# 关键字 'as'

2022-09-01 13:33:16

在Java中,是否可以尝试强制转换,并在强制转换失败时返回?null


答案 1
public static <T> T as(Class<T> t, Object o) {
  return t.isInstance(o) ? t.cast(o) : null;
}

用法:

MyType a = as(MyType.class, new MyType());   
// 'a' is not null

MyType b = as(MyType.class, "");   
// b is null

答案 2

您可以使用关键字来确定是否可以正确转换。instanceof

return obj instanceof String?(String)obj: null;

当然,它可以被泛型化并制作成函数,但我认为问题是Java必须实现此目的。


推荐