Casting que muda conforme a classe dos parametros

Estou criando um método cuja assinatura é mais ou menos assim:

setObjectsEnabled(Object[] ob, boolean b)

Minha intenção é usa-lo, por exemplo, assim:

setObjectsEnabled(new Object[]{jSpinner1,jSpinner2,jButton1,jList1},false);

O meu desejo é que o método execute algo assim:

for (Object o : ob){
o.setEnabled(b);
}

Para que, ao final, todos os objetos do array que forneci como parâmetro acabem, no caso, desabilitados (false) para edição.
Mas ocorre um problema pelo fato de que a classe Object não implementa o método setEnabled().
Penso então em modificar a classe de ‘o’ por casting.
Porém os objetos são de direntes classes (JSpinner, JButton, etc) e não estou sabendo como fazer esse casting corresponder
a cada classe da vez.

Pelo que ando lendo, a solução para isso deve passar por Reflection, ou .class.cast(), mas não estou certo disso. Alguem pode dar um rumo?

Obrigado.

Para o seu caso específico, você poderia passar um array de JComponent.

O método setEnabled vem desta classe e todos estes componentes herdam dela.

Em regra geral você procura por uma interface comum aos componentes que quiser passar.

Uma melhoria estética para facilitar a chamada, seria trocar o array por varargs…

assim você chamaria:

  setObjectsEnabled(false, jSpinner1, jSpinner2, jButton1 );

Obrigado!

Vou tentar.