Reflection: listar os campos de uma classe, pegar todos os vetores strs e limitar seus tamanhos

ola pessoal do GUJ

estou precisando fazer um trabalho que envolve indices em arquivos, mas em vez de fazer um trabalho com apenas uma classe, por que não fazer uma biblioteca que faça indices de qualquer tipo de classe genérica?

bem, eu estou meio barrado qndo for vetor. eu precisaria por reflection receber um atributo que é um vetor (ou array, se preferir) e assegurar que o temanho desse vetor seja de exatamente X. se for menor que X, teria que copiar os elementos do vetor em um outro vetor de tamanho X e se for menor, retirar todos os elementos que excedem X. o mesmo seria com uma string, no tamanho de caracteres

alguem pode me indicar que linha devo seguir?

Alías, Destro, parabéns pelo artigo http://www.guj.com.br/java.artigo.10.1.guj

Você quase não precisa de Reflection.

Para saber se um Object obj é um array:
obj.getClass().isArray()

Para saber se é um array de primitivos (uma vez que você já sabe que é um array): (obj instanceof Object[]) retorna false se for um array de primitivos, e true se for um array de objetos (por exemplo, um String[])

Para saber sua dimensão:
Se for um array de objetos, faça o cast para um Object[] e pegue o valor de length.
Se for um array de primitivos, é um pouco braçal porque você tem de fazer algo como:

int tam;
if (obj instanceof int[]) {
    tam = ((int[])obj).length;
} else if (obj instanceof char[]) {
    tam = ((char[])obj).length;
}else if ... // complete aqui o resto deste if

Para copiar, System.arraycopy faz o serviço para você.

Para redimensionar, aí sim, você precisa de Reflection. Mas é algo simples (java.lang.reflect.Array faz o serviço sujo para você).