`
friendsys
  • 浏览: 348192 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Bounded Wildcards Increase Applicability 使用界限通配符提供适用性

阅读更多
原文地址: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的好理解,有时间拿过来补充一下.




分享到:
评论

相关推荐

    Android中Bounded Service的使用说明.pdf

    总的来说,Bounded Service在Android中提供了客户端和服务之间高效、直接的交互方式,适用于需要频繁交互和控制服务生命周期的场景。理解并熟练掌握其使用方法对于Android开发者来说至关重要,因为它能够帮助优化...

    Java1.5泛型指南中文版(Java1.5Gene....pdf

    通配符可以分为bounded wildcards 和 unbounded wildcards 两种。 5. 泛型方法 泛型方法是指使用泛型类型参数的方法。例如,`public static &lt;T&gt; T identity(T t) { return t; }` 定义了一个名为 identity 的泛型...

    Java1.5泛型指南中文版.doc

    有限制的通配符 (Bounded Wildcards) 有限制的通配符可以通过`extends`或`super`关键字来进一步约束。`? extends T`表示未知类型是`T`或者`T`的子类型;`? super T`表示未知类型是`T`或者`T`的父类型。 ```java ...

    Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic

    为了解决上述问题,本文提出了一种新的构建方法——快速KD树构建算法(Fast kd-tree Construction with an Adaptive Error-Bounded Heuristic),该算法能够在保持较高质量的同时,大幅度提升构建速度,使之适用于...

    Java1.5泛型指南中文版

    ##### 4.1 有限制的通配符 (Bounded Wildcards) 有时候,我们希望通配符代表的类型具有一定的约束条件。例如,我们可能只关心 `List&lt;? extends Number&gt;`,即列表中元素的类型是 `Number` 或其子类。这里的 `? ...

    Java泛型之上界下界通配符详解

    2. 当你需要向集合中添加元素,但不需要调用只适用于特定类型的成员方法时,使用下界通配符。 3. 在设计API时,考虑如何使方法签名尽可能通用,同时确保类型安全。 4. 使用泛型类的子类型化,可以更好地利用继承和多...

    Java泛型指南

    边界通配符(Bounded Wildcards)则允许我们限制通配符的类型。有两种形式的边界通配符: - 上界通配符:`? extends T` 表示类型必须是 `T` 或其子类。 - 下界通配符:`? super T` 表示类型必须是 `T` 或其父类。 ...

    Polytope-bounded-Voronoi-diagram-master_QC_wheelgy7_polygrain_gr

    在计算机科学与材料科学的交叉领域,有一种用于模拟和分析多晶材料结构的方法,它涉及到“Polytope-bounded-Voronoi-diagram”(多面体边界Voronoi图)。这个标题中的“master_QC_wheelgy7_polygrain_gr”可能是指一...

    java泛型指南 经典

    ##### 4.1 有限制的通配符 (Bounded Wildcards) 通配符是 Java 泛型中的一个重要特性,它允许我们编写更加灵活的代码。通配符可以限制为上界或下界: - 上界限定:`? extends T`,表示未知类型是 `T` 或 `T` 的子...

    spdlog-master.rar_mpmc_bounded_q.h_spdlog

    标题中的"spdlog-master.rar_mpmc_bounded_q.h_spdlog"暗示了这是一个关于`spdlog`日志库的源代码压缩包,其中包含了`mpmc_bounded_q.h`这个特定的队列数据结构的实现。`spdlog`是一个在C++11环境下广泛使用的高性能...

    C Bounded Model Checker.zip

    C Bounded Model Checker(CBMC)是一个开源工具,专门用于静态分析C程序,特别是针对安全性、正确性和可靠性方面的验证。CBMC使用一种称为“有限状态模型检查”的技术,它能够检查程序在有限步执行下的行为,以确定...

    ANSI-C_Bounded_Model_Checker

    ### ANSI-C Bounded Model Checker (CBMC):关键技术与应用 #### 一、引言 在软件工程领域,特别是对于安全关键系统来说,确保代码的正确性和安全性是至关重要的任务。许多这样的系统采用低级别的语言编写,如ANSI...

    Java Generics Tutorial

    通配符不仅可以表示未知类型,还可以通过限定通配符(bounded wildcards)来指定类型范围。例如,`List&lt;? extends Number&gt;`表示该列表可以接受`Number`或其任何子类的元素。 #### 将遗留代码转换为使用泛型 将现有...

    Time-bounded Localization Algorithm based on

    Time-bounded Localization Algorithm based on Distributed Multidimensional Scaling for Wireless Sensor Networks

    生产者消费者(Bounded-Buffer Problem)

    生产者消费者问题(Bounded-Buffer Problem)是操作系统中一种典型的多线程同步问题,它模拟了一个场景,其中生产者线程生成数据并将数据放入一个有限大小的缓冲区,而消费者线程则从缓冲区中取出数据进行消费。...

Global site tag (gtag.js) - Google Analytics