<AWT Dev> JDK 9 RFR of JDK-8039109 : Fix unchecked and raw lint warnings in java.awt
Joe Darcy
joe.darcy at oracle.com
Wed Apr 30 23:04:35 UTC 2014
Hi Rémi,
> Hi Joe,
>
> in AWTKeyStroke, instead of
>
> Class<AWTKeyStroke> clazz = (Class<AWTKeyStroke>)AppContext.getAppContext().get(AWTKeyStroke.class);
>
> I should have the right type Class<? extends ...> (the class is a
> subclass of AWTKeyStroke) and
> do a classcheck at runtime when the class is extracted instead of later
>
> Class<? extends AWTKeyStroke> clazz = ((Class<?>)AppContext.getAppContext().get(AWTKeyStroke.class)).asSubClass(AWTKeyStroke.class);
As I'm not overly familiar with this code and the app context mechanism,
in the context of this lint removal exercise, I'd prefer to leave the
timing of the checks as they are today.
>
> and I think the second @SuppressWarnings in getCachedStroke() is
> unnecessary.
Right you are; I've removed the second @SuppressWarnings in the next
iteration of the patch.
>
>
> in GraphicsEnvironment, the last line of your diff can be simplified,
>
> ge = GraphicsEnvironment.class.cast(geCls.newInstance());
>
> can be written
>
> ge = (GraphicsEnvironment)geCls.newInstance();
>
> which is more readable IMO but will also generate exactly the same
> bytecode as the current implementation.
Yes, since the type being cast to is unchanging, it is not necessary to
do the cast using core reflection; updated in the next iteration.
>
>
> in KeyboardFocusManager,
>
> private Set<AWTKeyStroke>[] defaultFocusTraversalKeys = new Set[4];
>
> should be
>
> private Set<AWTKeyStroke>[] defaultFocusTraversalKeys = new Set<?>[4];
>
> so @SuppressWarnings("rawtypes") is not needed.
Actually, javac objects to the code you've proposed:
src/share/classes/java/awt/KeyboardFocusManager.java:352: error:
incompatible types: Set<?>[] cannot be converted to Set<AWTKeyStroke>[]
private Set<AWTKeyStroke>[] defaultFocusTraversalKeys = new Set<?>[4];
(IIRC, I ran into this when I was first putting the changeset together.)
>
>
> in DragGestureEvent, the newEvents should be a List<? extends InputEvent>,
> and @SuppressWarnings("rawtypes") should be a @SuppressWarnings("unchecked")
For the purposes of this clean up effort, I'm not eager to take on more
extensive updates to DragGestureEvent than adding the one
@SuppressWarnings. I would encourage the awt team to consider the update
you've suggested.
>
> in RenderableImageOp,
> getRenderableSources() should return a Vector of RenderableImage,
>
> public Vector<RenderableImage> getSources() {
> getRenderableSources();
> }
>
> private Vector<RenderableImage> getRenderableSources() {
> Vector<RenderableImage sources = null;
Petr made the same observation and I've addressed that in the second
iteration of the patch:
http://cr.openjdk.java.net/~darcy/8039109.2/
>
> all other modifications are OK for me.
Newest iteration at:
http://cr.openjdk.java.net/~darcy/8039109.3/
Thanks for the review,
-Joe
More information about the awt-dev
mailing list