Bounded Wildcards Increase Appleicabilityは、限界ワイルドカードを使用して適用性を提供します.

1445 ワード

原文の住所:http://www.c2.com/cgi/wiki?BoundedWildcardsIncreaseApplicability
注:かなりおなじみです.Effects Java第二版で見ました.
一つのJavaスタイルは、方法パラメータに汎型を使用し、方法パラメータが「producer」の時にワイルドカード限界「extens」を使用して、メソッドパラメータが「consumer」の時に「super」ワイルドカード(パラメータ値を修正します)を使用します.
Joshual Bloch 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のようによく分かりません.時間があれば、持ってきて補充してください.