Código:
 public static final int MiConstante;
public void crearConstante(int pValor){
        MiConstante = pValor;
    }
  Por que no inicializas la variable directamente en la linea donde la declaras?
Si ese valor lo obtienes de alguna otra parte como BD, archivo de configuracion, parametro, etc. podrias asignarle el valor en el 
static initializer. El 
static initializer solo se ejecuta una vez (cuando la clase es leida/necesaria por primera vez). 
Este codigo utiliza clase con una variable 
static final y su valor se le asigna la primer vez que es necesaria la clase (linea 17). El programa puede recibir un parametro (de tipo entero) que se utiliza para inicializar la variable 
temp. Lo que ocurre es que cuando quieres imprimir el valor de 
MiConstante (linea 17), se ejecuta el 
static initializer de la clase 
Otraclase    
Código Java:
Ver originalimport java.util.Date;
 
class Otraclase {
    public static final int MiConstante;
 
    static {
        MiConstante = Miclase.temp;
    }
}
public class Miclase {
    public static int temp;
 
    public static void main
(String[] args
) {         System.
out.
println(Otraclase.
MiConstante);     }
}