[
https://issues.apache.org/jira/browse/LANG-816?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13440102#comment-13440102
]
Stephen Colebourne commented on LANG-816:
-----------------------------------------
I'd suggest adding this to ObjectUtils if it gets done.
> introduce ConstantUtils class to prevent Javac from inlining constants
> ----------------------------------------------------------------------
>
> Key: LANG-816
> URL: https://issues.apache.org/jira/browse/LANG-816
> Project: Commons Lang
> Issue Type: Wish
> Reporter: Julius Davies
> Priority: Trivial
>
> ConstantUtils could contain a set of methods to ensure constants are not
> inlined by javac.
>
> For example, typically a developer might declare a constant like
> {code}
> public final static int MAGIC_NUMBER = 5;
> {code}
> Should a different jar file refer to this, and the MAGIC_NUMBER is changed a
> later date (e.g., MAGIC_NUMBER = 6), the different jar file will need to be
> recompiled. This is because javac typically inlines the primitive or String
> constant directly into the bytecode, and removes the reference to the
> MAGIC_NUMBER field.
> To help the other jar (so that it does not need to recompile when constants
> are changed) the original developer can declare their constant using one of
> the CONST() utility methods, instead:
> {code}
> public final static int MAGIC_NUMBER = CONST(5);
> {code}
> I imagine the code would look something like this:
> {code}
> public static boolean CONST(boolean v) { return v; }
> public static byte CONST(byte v) { return v; }
> public static char CONST(char v) { return v; }
> public static short CONST(short v) { return v; }
> public static int CONST(int v) { return v; }
> public static long CONST(long v) { return v; }
> public static float CONST(float v) { return v; }
> public static double CONST(double v) { return v; }
> public static <T> T CONST(T t) { return t; }
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira