Request for Review: 7116914 (Miscellaneous warnings (sun.text))
Stuart Marks
stuart.marks at oracle.com
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?
>
> http://cr.openjdk.java.net/~peytoia/7116914/webrev.00/
>
> 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 BidiBase.java:
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.
s'marks
More information about the core-libs-dev
mailing list