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

Anu*_*jan 19 c# java keyword as-keyword

我们知道C#提供了一个AS关键字,它自动检查Object是否属于某个类型,如果是,则将其转换为所需类型,否则返回null.

public class User

{

}

....

Object obj = someObj;

User user = obj As User;

...

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

那么Java中的任何关键字是否等同于C#的AS关键字?

Pet*_*rey 25

您可以创建一个帮助方法

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

User user = as(obj, User.class);
Run Code Online (Sandbox Code Playgroud)

  • 微小的事情 - 它是实例而不是isInstanceOf (3认同)

jbe*_*erg 20

不,您可以查看,instanceof然后如果匹配则投射

User user = null;
if(obj instanceof User) {
  user = (User) obj;
}
Run Code Online (Sandbox Code Playgroud)

  • 但是使用instanceof就像使用C#的IS关键字一样. (3认同)

tru*_*ity 11

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

User user = obj instanceof User ? (User) obj : null;
Run Code Online (Sandbox Code Playgroud)

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