Java中是否有与C#的'AS'关键字类似的关键字

时间:2011-06-02 20:06:36

标签: c# java keyword as-keyword

我们知道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关键字吗?

3 个答案:

答案 0 :(得分:24)

您可以创建辅助方法

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

User user = as(obj, User.class);

答案 1 :(得分:20)

不,你可以查看instanceof,然后选择匹配

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

答案 2 :(得分:11)

没有关键字,但为了完整性,我会给你1个班次的等价物:

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

(你可能不必有明确的演员表,我不确定。)