型パラメータつきクラスの中から指定された型パラメータを知る方法

型パラメータつきクラスHoeがあるとして、指定された型パラメータをHoeクラスの中から知る方法。

public class Hoe<E> {
    private Class<E> type;

    public Hoe(E... e) {
        @SuppressWarnings("unchecked")
        Class<E> type = (Class<E>) e.getClass().getComponentType();
        this.type = type;
    }

    public Class<E> getType() {
        return type;
    }
}

こうすると、具体的な型パラメータを取得できる。

例えば

Hoe<Fuga> hoe = new Hoe<Fuga>();

という文があった場合、hoe.getType()はFuga.classになる。

かなり裏技的だけど。