質問

私の把握に努めると共に、インターネットブラウザの分野では、オブジェクトです。私は非常に良いのではないかと思い型のオブジェクトに渡されるときに私には見分野 longs.できる箱入り Longsがプリミティブ long されてきていることから困難です。

I ができ の物体に渡って Longs, なので、プリミティブがいと思います。で何をしています:

for (Field f : o.getClass().getDeclaredFields()) {
    Class<?> clazz = f.getType();
    if (clazz.equals(Long.class)) {
        // found one -- I don't get here for primitive longs
    }
}

A hacky方、仕事では、この:

for (Field f : o.getClass().getDeclaredFields()) {
    Class<?> clazz = f.getType();
    if (clazz.equals(Long.class) ||  clazz.getName().equals("long")) {
        // found one
    }
}

うに掃除をすることがあります。がある場合に最良の方法はかることが必要な物を受けているのみ利用 Longlong いります。

そのアイデア?

役に立ちましたか?

解決

あなたが長いプリミティブをチェックするために間違った定数を使用している - Long.TYPEを使用し、互いのプリミティブ型は、同様に、ラッパーの名前の定数を見つけることができます。例えば:Byte.TYPECharacter.TYPEなど

他のヒント

o.getClass().getField("fieldName").getType().isPrimitive();

あなただけ使用することができます。

boolean.class
byte.class
char.class
short.class
int.class
long.class
float.class
double.class
void.class

をまったくこのチェックを行うなぜあなたは、なぜあなたは気にしない、リフレクションを使用している場合。あなたは、フィールドがプリミティブ型であるかどうかを知る必要がありませんので、取得/設定メソッドは常にオブジェクトを使用します(NULL値にプリミティブ型を設定しようとしない限り。)

実際には、この方法のために(取得)、あなたはそれがどのタイプを知っている必要はありません。あなたが行うことができます。

// any number type is fine.
Number n = field.get(object);
long l = n.longValue();

それはあなたが行うことができますNumber型である場合は、あなたがわからない場合は、

Object o = field.get(object); // will always be an Object or null.
if (o instanceof Number) {
     Number n = (Number) o;
     long l = n.longValue();
  • 検出分野 long タイプを使用 long.class または Long.TYPE.

  • 検出分野 Long タイプを使用 Long.class.

例:

for (Field f : o.getClass().getDeclaredFields()) {
    Class<?> clazz = f.getType();
    // to detect both Long and long types
    if (Long.class.equals(clazz) || long.class.equals(clazz)) {
        // found one
    }
}

通知:

Long.TYPE は静定員に相当 long.class.

スニペットコンポーネントに関連するワコム Long クラス

/**
 * The {@link Class} object that represents the primitive type {@code long}.
 */
@SuppressWarnings("unchecked")
public static final Class<Long> TYPE
        = (Class<Long>) long[].class.getComponentType();

またチェック 答え のための 差Integer.class および整数です。タイプ 質問

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top