Skip to content

Instantly share code, notes, and snippets.

@hidekuro
Last active December 17, 2015 12:39
Show Gist options
  • Save hidekuro/5611205 to your computer and use it in GitHub Desktop.
Save hidekuro/5611205 to your computer and use it in GitHub Desktop.
一般的なアプリ開発において、型引数にした型のClassオブジェクトを取得したり、 インスタンス化したりしたくなった場合、設計を疑うべきであるという前提のもと、 一般的ではない特殊なケースにおいて型引数のClassオブジェクトを特定する方法。 可変長引数を省略した場合、実装側には長さ0の配列が渡されることを利用する。 via http://d.hatena.ne.jp/language_and_engineering/20120502/p1 via http://d.hatena.ne.jp/Nagise/20100202/1265131791
public class MyClass<T> {
private Class<T> typeParamClass;
// このメソッドを引数なしで呼び出すと型が解決される
public void resolveTypeParamClass(T... t) {
@SuppressWarnings("unchecked")
Class<T> clazz = (Class<T>) t.getClass().getComponentType();
this.typeParamClass = clazz;
}
public Class<T> getTypeParamClass() {
return typeParamClass;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment