Request for Review: 7116914 (Miscellaneous warnings (sun.text))

Stuart Marks stuart.marks at
Fri Dec 2 21:53:01 UTC 2011

On 12/1/11 11:51 PM, Yuka Kamiya wrote:
> Hello,
> Could someone please review this fix?
> Some warnings are still issued even after this fix, and that's intentional.
> I'd like to solve them in another way rather than using @SuppressWarnings("deprecation") in the future.
> The original number of warnings in this area was 70. Now 16.

Hi Yuka,

I wanted to ask about this bit of code in

3492         return new AttributedCharacterIterator.Attribute(name) {
3493             static final long serialVersionUID = -4899048055171307694L;
3494         };

This is defining a serialVersionUID for an anonymous inner class. Serialization
of anonymous classes is quite problematic. Among the problems is that anonymous
classes have generated names that aren't specified. In this case the name is
sun.text.bidi.BidiBase$TextAttributeConstants$1 which appears to be where you
got the UID value. Unfortunately a different compiler might assign a different
name. Or if this file is modified to use another anonymous class, this class
might get a suffix of $2 (even if the same compiler is used). This means that
it's pretty much impossible to guarantee serialization compatibility of
anonymous classes.

(Thanks to Joe Darcy, who explained this to me just yesterday.)

You probably added a serialVersionUID because the compiler issued a warning
about the lack of one. :-) In this case I think what makes the most sense is
simply to suppress the warning.

Actually the original code is a little odd, as it returns an instance of an
anonymous subclass of AttributedCharacterIterator.Attribute, instead of an
instance of AttributedCharacterIterator.Attribute itself. I don't if this is
right or wrong.


More information about the core-libs-dev mailing list