Java中有没有类似于';作为';C#的关键字

本文关键字:关键字 作为 有没有 Java 类似于 | 更新日期: 2023-09-27 17:58:21

正如我们所知,C#提供了一个As关键字,它会自动检查Object是否属于某个类型,如果是,它会将其强制转换为所需的类型,否则会给出null。

public class User { }
Object obj = someObj;
User user = obj As User;

在上述示例中,Object obj可以是User类型或其他类型。用户将获得类型为user或null的对象。这是因为C#的As关键字首先执行检查,如果可能的话,然后将对象强制转换为结果类型。

那么,Java中是否有与C#的AS关键字等效的关键字?

Java中有没有类似于';作为';C#的关键字

您可以创建一个辅助方法

public static T as(Object o, Class<T> tClass) {
     return tClass.isInstance(o) ? (T) o : null;
}
User user = as(obj, User.class);

否,您可以使用instanceof进行检查,然后强制转换它是否匹配

User user = null;
if(obj instanceof User) {
  user = (User) obj;
}

没有关键字,但为了完整起见,我给你一个等价的1行:

User user = obj instanceof User ? (User) obj : null;

(我不确定,您可能不需要显式强制转换。)