Tag: 通配符

Java Generics:通配符捕获误解

阅读Java在线教程我对通配符捕获一无所知。 例如: import java.util.List; public class WildcardError { void foo(List i) { i.set(0, i.get(0)); } } 为什么编译器不能保持赋值安全? 它知道,通过执行例如带有整数列表的方法,它从i.get得到一个Integer值。 因此,它尝试将索引0处的Integer值设置为相同的整数列表(i)。 那么,出了什么问题?为什么要写Wildcard助手?

如何检查Java中是否存在带通配符的文件?

我有一个目录,里面的文件名为”a_id_XXX.zip” 。 如何根据id和File dir检查文件是否存在?

通配符背后的目的是什么?它们与generics有何不同?

我几天前从未听说过野猫,在读完老师的Java书之后,我仍然不确定它是什么,为什么我需要使用它。 假设我有一个超级Animal和几个子类,如Dog , Cat , Parrot等……现在我需要有一个动物列表,我的第一个想法是这样的: List listAnimals 相反,我的同事们推荐的内容如下: List listAnimals 为什么我应该使用通配符而不是简单的generics? 假设我需要一个get / set方法,我应该使用前者还是后者? 他们怎么这么不同?

何时在Java Generics中使用通配符?

这是来自HeadFirst Java :(第575页) 这个: public void takeThing(ArrayList list) 与此相同: public void takeThing(ArrayList list) 所以这是我的问题:如果它们完全相同,我们为什么不写 public void takeThing(ArrayList list) 要么 public void takeThing(ArrayList list) 此外,何时使用?有用? 使用generics或类声明而不是方法声明中的T(如上所述)? 有什么好处?