|
||||||||||||||||||||||
|
ワイルドカードクラスの定義としてではなく、通常の型のようにジェネリックスの型を指定することもできます。 次の例をみてください。
public static void main(String[] args) {
//Box<String> b = new Box<String>("Hello");
SalesPerson p = new SalesPerson(123,"Keisuke");
Box<SalesPerson> b = new Box<SalesPerson>(p);
foo(b);
}
public static void foo(Box<SalesPerson> bp){
// Do something
}
この例では foo メソッドは Box<SalesPerson> 型のパラメータのみを受けとります。 もし、この foo メソッドが Person から派生した全てのサブクラスを受けとるのであれば、次のように表記できます。
public static void foo(Box<? extends Person> bp){
// Do something
}
このように、「このクラスのサブクラスならなんでも」という風にしてをする場合は、ワイルドカードとしてクエスチョンマーク (?) を用いて表現します。 この場合のように派生クラス (サブクラス) なら何でも、と指定する場合は、? 記号と extends というキーワードを用います。 extends は通常のクラス定義と同様なので、ピンと来やすいのではないでしょうか。 この他、実は スーパーバウンド という型の指定方法もあります。 |
|
© 2010 Java 入門 |
|||||||||||||||||||