Tudo bem arglas?
No seu código tem duas coisas que podem ser melhoradas.
Quando utilizamos coleções de dados, tipo ArrayList, Vector e etc, devemos especificar o tipo de dado que essa coleção irá suportar, pois apenas dados do tipo especificado serão suportados e assim evitando erros em tentar adicionar outro tipo ao ArrayList.
por exemplo:
List<Profissional> listaProfissional = new ArrayList<Profissional>();
Profissional p = new Profissional(argumentos);
listaProfissional.add(p);
E na hora que vamos atribuir uma nova referência a objetos do mesmo tipo,não precisamos fazer cast para este tipo, que nem você faz aqui:
Profissional objNovo = new Profissional(paramentrosNovos);
objProfissionaldaLista = (Profissional) objNovo;
Com isso seu código poderia ficar da seguinte maneira:
List<Profissional> listaProfissional = new ArrayList<Profissional>();
Profissional p1 = new Profissional(argumentos);
Profissional p2 = new Profissional(argumentos);
Profissional p3 = new Profissional(argumentos);
listaProfissional.add(p1);
listaProfissional.add(p2);
listaProfissional.add(p3);
Profissional objProfissionaldaLista = listaProfissional.get(index);
Profissional objNovo = new Profissional(paramentrosNovos);
objProfissionaldaLista = objNovo; // Linha 1
Na linha 1: o objeto que você recebeu da lista e a variavel objProfissionaldaLista referenciava, passa a referenciar o novo objeto criado (objNovo).
Espero ter ajudado e qualquer coisa estou a disposição,
Gabriel Massote Prado.