Mercurial > hg > release > icedtea7-forest-2.6 > jdk
changeset 18:b5da6145b050
6671834: (str) Eliminate StringCoding.java compile warnings
Reviewed-by: iris
author | martin |
---|---|
date | Sun, 09 Mar 2008 21:56:42 -0700 |
parents | 1be19881457e |
children | 7fb2ca1b52c8 |
files | src/share/classes/java/lang/StringCoding.java |
diffstat | 1 files changed, 11 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/java/lang/StringCoding.java Sun Mar 09 21:56:42 2008 -0700 +++ b/src/share/classes/java/lang/StringCoding.java Sun Mar 09 21:56:42 2008 -0700 @@ -53,22 +53,23 @@ private StringCoding() { } - /* The cached coders for each thread - */ - private static ThreadLocal decoder = new ThreadLocal(); - private static ThreadLocal encoder = new ThreadLocal(); + /** The cached coders for each thread */ + private final static ThreadLocal<SoftReference<StringDecoder>> decoder = + new ThreadLocal<SoftReference<StringDecoder>>(); + private final static ThreadLocal<SoftReference<StringEncoder>> encoder = + new ThreadLocal<SoftReference<StringEncoder>>(); private static boolean warnUnsupportedCharset = true; - private static Object deref(ThreadLocal tl) { - SoftReference sr = (SoftReference)tl.get(); + private static <T> T deref(ThreadLocal<SoftReference<T>> tl) { + SoftReference<T> sr = tl.get(); if (sr == null) return null; return sr.get(); } - private static void set(ThreadLocal tl, Object ob) { - tl.set(new SoftReference(ob)); + private static <T> void set(ThreadLocal<SoftReference<T>> tl, T ob) { + tl.set(new SoftReference<T>(ob)); } // Trim the given byte array to the given length @@ -174,7 +175,7 @@ static char[] decode(String charsetName, byte[] ba, int off, int len) throws UnsupportedEncodingException { - StringDecoder sd = (StringDecoder)deref(decoder); + StringDecoder sd = deref(decoder); String csn = (charsetName == null) ? "ISO-8859-1" : charsetName; if ((sd == null) || !(csn.equals(sd.requestedCharsetName()) || csn.equals(sd.charsetName()))) { @@ -273,7 +274,7 @@ static byte[] encode(String charsetName, char[] ca, int off, int len) throws UnsupportedEncodingException { - StringEncoder se = (StringEncoder)deref(encoder); + StringEncoder se = deref(encoder); String csn = (charsetName == null) ? "ISO-8859-1" : charsetName; if ((se == null) || !(csn.equals(se.requestedCharsetName()) || csn.equals(se.charsetName()))) {