2

今、そうする簡単な方法はありますか?Long、Float、Integer、Byteなどのオブジェクトがあるとしましょう。このオブジェクトから同等のプリミティブクラス(Class)を取得するにはどうすればよいですか?

メソッドは次のように書くことができます

Class<?> getEquivalentPrimitiveType(Object obj)
{
}
4

1 に答える 1

5

対応するプリミティブ型は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のデモです。

于 2013-03-15T09:35:38.567 に答える