正如我们所知,C#提供了一个As关键字,该关键字自动检查对象是否属于某个类型,如果是,则将其强制转换为所需的类型,否则将返回null。
public class User { }
Object obj = someObj;
User user = obj As User;
在上面的例子中,对象obj可以是User类型,也可以是其他类型。用户将获得一个类型为user或为空的对象。这是因为C#的As关键字首先执行检查,如果可能,然后将对象转换为结果类型。
那么在Java中有没有与C#的AS关键字等价的关键字呢?
发布于 2011-06-03 04:11:51
您可以创建帮助器方法
public static T as(Object o, Class<T> tClass) {
return tClass.isInstance(o) ? (T) o : null;
}
User user = as(obj, User.class);
发布于 2011-06-03 04:07:52
不,如果匹配,您可以检查instanceof
,然后进行强制转换
User user = null;
if(obj instanceof User) {
user = (User) obj;
}
发布于 2011-06-03 05:11:35
没有关键字,但为了完整,我会给你一个等价的1行代码:
User user = obj instanceof User ? (User) obj : null;
(我不确定,您可能不必进行显式强制转换。)
https://stackoverflow.com/questions/6219773
复制相似问题