Vi algunos códigos en slf4j como se muestra a continuación. No sé por qué evitar el plegado constante aquí. ¿Es necesario hacer eso? o simplemente la mejor práctica. ¿Cuál es el beneficio de hacer esto?¿por qué evitar el doblado constante en Java? ¿Cuando?
Gracias.
/**
* Declare the version of the SLF4J API this implementation is compiled against.
* The value of this field is usually modified with each release.
*/
// to avoid constant folding by the compiler, this field must *not* be final
public static String REQUESTED_API_VERSION = "1.6"; // !final**
¿Has visto el wiki sobre este tema? Creo que lo explica bastante bien. http://en.wikipedia.org/wiki/Constant_folding – CoolBeans
Puede usar un método en lugar de exponer este campo (probablemente el mejor), use 'final' pero pase el valor a través de un método (' "1.6" .toString() ') o agregue algún código para evitar que sea una * constante de tiempo de compilación * pero no agregue ningún bytecode innecesario ('null! = null?" ":" 1.6 "'). –
¡Sí, las constantes estáticas públicas son repulsivas! –