当前位置:  开发笔记 > 编程语言 > 正文

什么时候应该使用类的java 5方法?

如何解决《什么时候应该使用类的java5方法?》经验,为你挑选了1个好方法。

查看一些代码,我遇到了以下代码

trTuDocPackTypdBd.update(TrTuDocPackTypeDto.class.cast(packDto));

我想知道这种方式是否有任何优势

trTuDocPackTypdBd.update((TrTuDocPackTypeDto)packDto);

我问开发人员负责,他说他使用它是因为它是新的(这对我来说似乎不是一个特别好的理由),但是当我想要使用这种方法时我很感兴趣.



1> erickson..:

这些陈述不完全相同.cast方法是普通的方法调用(invokevirtualJVM指令),而另一个是语言构造(checkcast指令).如果您在上面显示,您应该使用第二种形式:(TrTuDocPackTypeDto) packDto

cast当您具有某种变量类型的Class实例时,该方法用于使用泛型的反射编程.你可以像这样使用它:

public  Set find(Class clz, Filter criteria) {
  List raw = session.find(clz, criteria); /* A legacy, un-generic API. */
  Set safe = new HashSet();
  for (Object o : raw) 
    safe.add(clz.cast(o));
  return safe;
}

这为您提供了一种安全的方法来避免将原始类型简单地转换为泛型类型的错误替代方法:

/* DO NOT DO THIS! */
List raw = new ArrayList();
...
return (List) raw;

编译器会警告你,Unchecked cast from List to List这意味着在省略号中,有人可以Gadget在原始列表中添加一个,这最终会导致ClassCastException调用者在返回的(假定的)Widget实例列表上进行迭代.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有