yur*_*ura 2 java generics guava
为什么google-collections或guava包含语义上相同的功能?例:
static
<T> Predicate<T>
and(Predicate<? super T>... components) 
static
<T> Predicate<T>
and(Predicate<? super T> first, Predicate<? super T> second) 
Run Code Online (Sandbox Code Playgroud)
即所有可以接受多个参数的函数.
第二个问题为什么这些函数的定义使用泛型<? super T>而不是<T>?
要回答第一个问题,Predicate<? super T>...当使用多个通用谓词(例如Predicate<T>)调用时,varargs version()将向您发出关于未经检查的通用数组创建的警告.对于组合两个谓词的常见情况,您不会收到该警告.
要回答第二个问题,采取Predicate<? super T>意味着您可以在调用方法时传入Predicate<Object>(Predicate<Number>或其他)来创建Predicate<Integer>.例如,如果Predicates.notNull()是Predicate<Object>(因为它应该)并且你想要将它和一些组合在一起Predicate<Integer>,那么如果参数必须是类型的话就不可能Predicate<T>.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           392 次  |  
        
|   最近记录:  |