Generics 勉強中

タイトル通り Generics 勉強中です。
Integer.MAX_VALUE で Integer の最大値をとってくるみたいに、

// このソースはコンパイル通らないので参考にしないでね。
class Values <T> {
    private T max, min;
    public Values() {
        this.max = T.MAX_VALUE;
        this.min = T.MIN_VALUE;
    }
    public T getMax() {
        return this.max;
    }
    public T getMin() {
        return this.min;
    }
}


class ValuesTester() {
    public static void main(String[] args) {
        Values <Byte> obj = new Values<Byte>();
        System.out.println("Byte : " + obj.getMin + "〜" + obj.getMax);
        Values <Integer> obj2 = new Values<Integer>();
        System.out.println("Integer : " + obj2.getMin + "〜" + obj2.getMax);
    }
}

みたいなコード書きたいんだけど、これはコンパイル通りませんでした。
こんな感じに実現する方法ないのかな?



22時30分追記
twitter@nagise さんからリプライいただきました!

なぎせゆうき
@nagise
 @shiget84 無理だねぇ。Tは型じゃなくて型変数なのでstaticなメソッドやフィールド呼び出しはできないよ。(2009-08-21 22:19:43) link
なぎせゆうき
@nagise
 @shiget84 型変数Tを使える場所ってのは限られていて、変数や引数、フィールドの型宣言ぐらいだね。new T()とかもできない。(2009-08-21 22:22:00) link
なぎせゆうき
@nagise
 だからジェネリックなクラスを作った場合、T型のオブジェクトってのはどこか外から受け取らないといけない。キセルのように、入口から出口までの間のぶぶんをTという形で抽象的に扱うわけだね。(2009-08-21 22:24:10) link


ということで、やっぱり無理なんですね。勉強になりました!
なぎせさん、ありがとうございました!



参考
型変数の制約
http://wisdom.sakura.ne.jp/programming/java/java5_2.html