Dúvida: Inserção de nova parte em um programa compilado

Quero fazer o seguinte:

Tenho um programa e em seu diretório tenho uma pasta/pacote com classes.
Quero ler este pacote via código, contar quantas classes têm e depois instanciar uma a uma.

A vantagem é que mesmo depois do projeto principal compilado eu poderia acrescentar mais uma parte do software neste diretório.

Ainda não me preocupei em como vou ler o pacote e conseguir o número de classes e seus nomes.
Fiz um teste com um array de strings, usei o Class getClass ForName para instanciar as strings, o problema é que não tenho acesso direto a classe, o que tenho é uma instancia intermediária e tenho que usar os métodos do getClass para puxar métodos da classe que quero.

Por favor, alguém saberia alguma forma de fazer isto?

Você quer implementar um class loader?

Isto!

Há como fazer isto e ter acesso completo ao objeto sem ter que usar um intermediário?