Summary
The final
modifier will be added to the BackgroundPosition
, BorderImage
, BorderStroke
, and CornerRadii
classes.
Problem
Backgrounds and borders are comprised of immutable and final types. The following types are marked with the final
modifier:
Background
BackgroundFill
BackgroundImage
BackgroundSize
Border
BorderWidths
The following types are not marked with the final
modifier:
BackgroundPosition
BorderImage
BorderStroke
CornerRadii
This is probably just an oversight, as there is no value in allowing a subsection of these types to be extended.
Solution
Add the final
modifier.
Specification
--- a/modules/javafx.graphics/src/main/java/javafx/scene/layout/BackgroundPosition.java
+++ b/modules/javafx.graphics/src/main/java/javafx/scene/layout/BackgroundPosition.java
@@ -52,7 +52,7 @@
* the Region's right edge.
* @since JavaFX 8.0
*/
-public class BackgroundPosition implements Interpolatable<BackgroundPosition> {
+public final class BackgroundPosition implements Interpolatable<BackgroundPosition> {
/**
* The default BackgroundPosition for any BackgroundImage. The default
* is to have no insets and to be defined as 0% and 0%. That is, the
--- a/modules/javafx.graphics/src/main/java/javafx/scene/layout/BorderImage.java
+++ b/modules/javafx.graphics/src/main/java/javafx/scene/layout/BorderImage.java
@@ -50,7 +50,7 @@
* When applied to a Region with a defined shape, a BorderImage is ignored.
* @since JavaFX 8.0
*/
-public class BorderImage implements Interpolatable<BorderImage> {
+public final class BorderImage implements Interpolatable<BorderImage> {
/**
* The image to be used. This will never be null. If this
* image fails to load, then the entire BorderImage will
--- a/modules/javafx.graphics/src/main/java/javafx/scene/layout/BorderStroke.java
+++ b/modules/javafx.graphics/src/main/java/javafx/scene/layout/BorderStroke.java
@@ -48,7 +48,7 @@
*
* @since JavaFX 8.0
*/
-public class BorderStroke implements Interpolatable<BorderStroke> {
+public final class BorderStroke implements Interpolatable<BorderStroke> {
/**
* The default insets when "thin" is specified.
*/
--- a/modules/javafx.graphics/src/main/java/javafx/scene/layout/CornerRadii.java
+++ b/modules/javafx.graphics/src/main/java/javafx/scene/layout/CornerRadii.java
@@ -39,7 +39,7 @@
*
* @since JavaFX 8.0
*/
-public class CornerRadii implements Interpolatable<CornerRadii> {
+public final class CornerRadii implements Interpolatable<CornerRadii> {
/**
* A CornerRadii which is entirely empty, indicating squared corners.
* This is the default value for a BorderStroke's radii.
- csr of
-
JDK-8341372 BackgroundPosition, BorderImage, BorderStroke, CornerRadii should be final
-
- Resolved
-