今、そうする簡単な方法はありますか?Long、Float、Integer、Byteなどのオブジェクトがあるとしましょう。このオブジェクトから同等のプリミティブクラス(Class)を取得するにはどうすればよいですか?
メソッドは次のように書くことができます
Class<?> getEquivalentPrimitiveType(Object obj)
{
}
今、そうする簡単な方法はありますか?Long、Float、Integer、Byteなどのオブジェクトがあるとしましょう。このオブジェクトから同等のプリミティブクラス(Class)を取得するにはどうすればよいですか?
メソッドは次のように書くことができます
Class<?> getEquivalentPrimitiveType(Object obj)
{
}
対応するプリミティブ型はLong.TYPE
次のとおりです。
public static final Class<Long> TYPE
プリミティブ型を表すClassインスタンス
long
。
「ラッパー」クラスのインスタンスがある場合は、次のように、リフレクションを介して対応するプリミティブを取得できます。
static <T> Class<T> getPrimitive(Class<T> wrapper)
throws NoSuchFieldException, IllegalAccessException {
return (Class<T>)wrapper.getDeclaredField("TYPE").get(null);
}
これがideoneのデモです。