Sim, vamos supor que você cria uma classe de constantes:
public class Tipos{
public static final int A1 = 1;
public static final int A2 = 2;
public static final int A3 = 3;
public static final int A4 = 4;
// outras constantes
}
Então seu método
cadastrar teria que receber um
int:
public void cadastrar(Registro registro, int tipo){
// implementação
}
onde no caso você iria querer que fosse chamado assim:
cadastrar(registro, Tipos.A2);
Sendo assim, algum usuário esperto pode enviar qualquer int, que seria um valor válido.
cadastrar(registro, -31);
Com um
enum você evita isso, ele só conseguirá enviar valores que são válidos na sua enumeração.
OBS: O exemplo acima foi só ilustrativo, provavelmente o tipo está dentro do registro, mas assim ficou mais didático :)