-
CSR
-
Resolution: Approved
-
P4
-
None
-
source, binary
-
low
-
-
Java API
-
SE
Summary
Make several AWT API classes sealed or final.
Problem
There are classes in the AWT API which have a known set of direct sub-classes, or no sub-classes. These should have the sealed or final modifier applied to indicate this.
Solution
Apply the sealed modifier from JEP 409 ( https://openjdk.java.net/jeps/409 ) to explicitly document and limit the direct API sub-classes of existing API classes which have no public or protected constructors - and so can be compatibly updated in this way. Similarly identified classes which have no sub-classes should be marked final.
Sub-classes of newly sealed classes are made non-sealed as needed, or final if they are not already - if that is a compatible change.
Specification
java.awt.GridBagLayoutInfo
-public class GridBagLayoutInfo implements java.io.Serializable +public final class GridBagLayoutInfo implements java.io.Serializable
java.awt.PointerInfo
-public class PointerInfo +public final class PointerInfo
java.awt. ScrollPaneAdjustable
-public class ScrollPaneAdjustable implements Adjustable, Serializable +public final class ScrollPaneAdjustable implements Adjustable, Serializable
java.awt.dnd.DropTargetContext
-public class DropTargetContext implements Serializable +public final class DropTargetContext implements Serializable
java.awt.TextComponent
-public class TextComponent extends Component implements Accessible { +public sealed class TextComponent extends Component implements Accessible + permits TextArea, + TextField {
java.awt.TextField
-public class TextField extends TextComponent +public non-sealed class TextField extends TextComponent
java.awt.TextArea
-public class TextArea extends TextComponent +public non-sealed class TextArea extends TextComponent
java.awt.InputEvent
-public abstract class InputEvent extends ComponentEvent +public abstract sealed class InputEvent extends ComponentEvent + permits KeyEvent, + MouseEvent {
java.awt.event.KeyEvent
-public class KeyEvent extends InputEvent +public non-sealed class KeyEvent extends InputEvent------ java.awt.event.MouseEvent
-public class MouseEvent extends InputEvent +public non-sealed class MouseEvent extends InputEvent
java.awt.desktop.AppEvent
-public class AppEvent extends EventObject { +public sealed class AppEvent extends EventObject + permits AboutEvent, + AppForegroundEvent, + AppHiddenEvent, + AppReopenedEvent, + FilesEvent, + OpenURIEvent, + PreferencesEvent, + QuitEvent, + ScreenSleepEvent, + SystemSleepEvent, + UserSessionEvent {
java.awt.desktop.FilesEvent
-public class FilesEvent extends AppEvent { +public sealed class FilesEvent extends AppEvent + permits OpenFilesEvent, + PrintFilesEvent {
- csr of
-
JDK-8283700 Add final or sealed modifier to appropriate java.awt API classes
-
- Resolved
-