Personal tools
You are here: Home ブログ nakayama Genericsの罠
Document Actions

Genericsの罠

Java1.5で、二つのValidatorを合成したValidatorのベースになるものを作ろうとして、

public class CompositValidator<L, R> implements Validator {
    Validator[] validators;
    public CompositValidator(String name) {
        super(name);
        validators = new Validator[2];
        validators[0] = new L();
        validators[1] = new R();
    }     public boolean validate(String arg) {
        for (Validator validator : validators) {
            if (!validator.validate(arg)) {
                return false;
            }
        }
        return true;
    } }

と書いたら、コンパイラに拒否されました。
JavaのGenericsだと、コンパイル時に型パラメータが消されて実行時には型情報が残らないので、new Lとかできないんですな。
C++使いにはつらい言語です。Lを文字列化できれば、リフレクションでなんとかなるんですが、それも無理っぽいし。

Category(s)
覚え書き
The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/anaka/generics306e7f60/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.