2

フィールドが(この場合)Set<String>からジェネリックの型を決定する方法である場合?SetString

ジェネリック型を決定するこのメソッドがあります。

private boolean isSetTypeOf( Set<?> set, Class<?> clazz )
{
    for ( Object object : set )
    {
        if ( object.getClass().equals( clazz ) )
        {
            return true;
        }
    }
    return false;
}

しかし、フィールドをセットとしてキャストできないため、このメソッドは使用できません。

Field field = getTheField();

if ( ReflectionUtils.isType( field, Set.class )
{
    // Error
    if ( isSetTypeOf( field, clazz ) )
    {
        // do something
    }
}

基本的に、フィールド タイプがセットであることはわかっています。セットが保持するオブジェクトのタイプを知る必要があり、その後でそのフィールドを使用します。

4

3 に答える 3

1

これを行う

if ( isSetTypeOf( new HashSet().add(field), clazz ) )

それ以外の:

if ( isSetTypeOf( field, clazz ) )
于 2013-08-10T07:41:26.170 に答える
1

これを試してobject.getClass().isAssignableFrom(clazz)

于 2013-08-10T07:38:42.893 に答える