境界・非境界

現在、部署のみんなとEffective Java 第2版を輪読している。本当いい本!難易度は結構高めだけど。

Effective Java 第2版 (The Java Series)

Effective Java 第2版 (The Java Series)


今、第五章「ジェネリクス」をやっているんだけど、境界(bounded)・非境界(unbounded)という言葉が目立つ。言葉が小難しくてイマイチ何を言っているのかが分かりにくかったので整理。
簡単に言えば、非境界は「なんでも」、境界は「制限された」ってところかな。

非境界

こんなヤツです。EにはStringでもNumberでもなんでも実パラメータとして定義できる。

public class Hoge<E> {

なお、<?>のことを非境界ワイルドカードと呼ぶ。

境界

こんなヤツです。EにはCollectionのサブクラスしか定義できない。

public class Hoge<E extends Collection> {

なお、<? extends E>のことを境界ワイルドカードと呼ぶ。