原文地址:http://www.c2.com/cgi/wiki?BoundedWildcardsIncreaseApplicability
批注:也是相当熟悉,在Effects Java 第二版上见过
一种Java风格在方法参数上使用泛型,当方法参数为"producer"时使用通配符界限"extends"(参数只被读取),当方法参数为"consumer"时使用'super' 通配符(将会修改参数值),你可以使用口诀进行记忆 PECS (Producer Extends, Consumer Super).
由JoshuaBloch at JavaOne: [url]http://developers.sun.com/learning/javaoneonline/2006/coreplatform/TS-1512.pdf [/url]
一个JagGregate上的例子
abstract class UnaryPredicate<A> {
boolean matches( A target );
}
interface Collection<E> {
boolean addAll( Collection<? extends E> newElements );
Collection<E> select( UnaryPredicate<? super E> discriminator );
}
UnaryPredicate<Object> evenHash = new UnaryPredicate<Object>() {
public boolean matches( Object target ) {
return target == null || target.hashCode() % 2 == 0;
}
};
Collection<Number> digits = Set.emptySet();
digits.addAll( Interval.fromTo( 0, 9 ) );
Collection<Number> digitsWithEvenHash = digits.select( evenHash );
批注:代码本身只是用于了解下具体意图
如果这个集合的方法没有使用通配符,那么 digits.addAll() 只能运行Number泛型的集合参数,即使它可以使用Integers, Doubles, 等. 类似的digits.select()只能允许判断使用Number的泛型, 即使他允许以Number为泛型超类的对象.
...翻译并不精准,例子也不如Effects Java的好理解,有时间拿过来补充一下.
分享到:
相关推荐
总的来说,Bounded Service在Android中提供了客户端和服务之间高效、直接的交互方式,适用于需要频繁交互和控制服务生命周期的场景。理解并熟练掌握其使用方法对于Android开发者来说至关重要,因为它能够帮助优化...
通配符可以分为bounded wildcards 和 unbounded wildcards 两种。 5. 泛型方法 泛型方法是指使用泛型类型参数的方法。例如,`public static <T> T identity(T t) { return t; }` 定义了一个名为 identity 的泛型...
有限制的通配符 (Bounded Wildcards) 有限制的通配符可以通过`extends`或`super`关键字来进一步约束。`? extends T`表示未知类型是`T`或者`T`的子类型;`? super T`表示未知类型是`T`或者`T`的父类型。 ```java ...
为了解决上述问题,本文提出了一种新的构建方法——快速KD树构建算法(Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic),该算法能够在保持较高质量的同时,大幅度提升构建速度,使之适用于...
2. 当你需要向集合中添加元素,但不需要调用只适用于特定类型的成员方法时,使用下界通配符。 3. 在设计API时,考虑如何使方法签名尽可能通用,同时确保类型安全。 4. 使用泛型类的子类型化,可以更好地利用继承和多...
边界通配符(Bounded Wildcards)则允许我们限制通配符的类型。有两种形式的边界通配符: - 上界通配符:`? extends T` 表示类型必须是 `T` 或其子类。 - 下界通配符:`? super T` 表示类型必须是 `T` 或其父类。 ...
在计算机科学与材料科学的交叉领域,有一种用于模拟和分析多晶材料结构的方法,它涉及到“Polytope-bounded-Voronoi-diagram”(多面体边界Voronoi图)。这个标题中的“master_QC_wheelgy7_polygrain_gr”可能是指一...
##### 4.1 有限制的通配符 (Bounded Wildcards) 通配符是 Java 泛型中的一个重要特性,它允许我们编写更加灵活的代码。通配符可以限制为上界或下界: - 上界限定:`? extends T`,表示未知类型是 `T` 或 `T` 的子...
标题中的"spdlog-master.rar_mpmc_bounded_q.h_spdlog"暗示了这是一个关于`spdlog`日志库的源代码压缩包,其中包含了`mpmc_bounded_q.h`这个特定的队列数据结构的实现。`spdlog`是一个在C++11环境下广泛使用的高性能...
C Bounded Model Checker(CBMC)是一个开源工具,专门用于静态分析C程序,特别是针对安全性、正确性和可靠性方面的验证。CBMC使用一种称为“有限状态模型检查”的技术,它能够检查程序在有限步执行下的行为,以确定...
### ANSI-C Bounded Model Checker (CBMC):关键技术与应用 #### 一、引言 在软件工程领域,特别是对于安全关键系统来说,确保代码的正确性和安全性是至关重要的任务。许多这样的系统采用低级别的语言编写,如ANSI...
通配符不仅可以表示未知类型,还可以通过限定通配符(bounded wildcards)来指定类型范围。例如,`List<? extends Number>`表示该列表可以接受`Number`或其任何子类的元素。 #### 将遗留代码转换为使用泛型 将现有...
Time-bounded Localization Algorithm based on Distributed Multidimensional Scaling for Wireless Sensor Networks
生产者消费者问题(Bounded-Buffer Problem)是操作系统中一种典型的多线程同步问题,它模拟了一个场景,其中生产者线程生成数据并将数据放入一个有限大小的缓冲区,而消费者线程则从缓冲区中取出数据进行消费。...