You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Matt Benson (JIRA)" <ji...@apache.org> on 2011/08/05 15:29:27 UTC
[jira] [Commented] (LANG-736) CharUtils static final array
CHAR_STRING is not needed to compute CHAR_STRING_ARRAY
[ https://issues.apache.org/jira/browse/LANG-736?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13079966#comment-13079966 ]
Matt Benson commented on LANG-736:
----------------------------------
Actually, I read the report as "the *current* lang code relies on a Sun feature, and should be changed."
> CharUtils static final array CHAR_STRING is not needed to compute CHAR_STRING_ARRAY
> -----------------------------------------------------------------------------------
>
> Key: LANG-736
> URL: https://issues.apache.org/jira/browse/LANG-736
> Project: Commons Lang
> Issue Type: Bug
> Components: lang.*
> Affects Versions: 3.0
> Reporter: Gary D. Gregory
> Assignee: Gary D. Gregory
> Fix For: 3.0.2
>
> Attachments: lang-736.diff
>
>
> CharUtils static final array CHAR_STRING is not needed to compute CHAR_STRING_ARRAY.
> This:
> {code:java}
> private static final String CHAR_STRING =
> "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007" +
> "\b\t\n\u000b\f\r\u000e\u000f" +
> "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017" +
> "\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f" +
> "\u0020\u0021\"\u0023\u0024\u0025\u0026\u0027" +
> "\u0028\u0029\u002a\u002b\u002c\u002d\u002e\u002f" +
> "\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037" +
> "\u0038\u0039\u003a\u003b\u003c\u003d\u003e\u003f" +
> "\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047" +
> "\u0048\u0049\u004a\u004b\u004c\u004d\u004e\u004f" +
> "\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057" +
> "\u0058\u0059\u005a\u005b\\\u005d\u005e\u005f" +
> "\u0060\u0061\u0062\u0063\u0064\u0065\u0066\u0067" +
> "\u0068\u0069\u006a\u006b\u006c\u006d\u006e\u006f" +
> "\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077" +
> "\u0078\u0079\u007a\u007b\u007c\u007d\u007e\u007f";
> // snip
> for (int i = 127; i >= 0; i--) {
> CHAR_STRING_ARRAY[i] = CHAR_STRING.substring(i, i + 1);
> }
> {code}
> Can be recoded as:
> {code:java}
> for (char c = 0; c < CHAR_STRING_ARRAY.length; c++) {
> CHAR_STRING_ARRAY[c] = String.valueOf(c);
> }
> {code}
> With the lang 3.0 code, using the Oracle Java 5 String impl, the 128 Strings share the underlying CHAR_STRING char[] because of the way Sun implemented String#substring(int,int).
> The proposed implementation does not reply on this private implementation detail but creates one char[1] array per String.
> Thoughts?
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira