diff --git a/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTag.java b/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTag.java index 9ee0207fed..e145cbc0e5 100644 --- a/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTag.java +++ b/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTag.java @@ -39,11 +39,7 @@ public class AprilTag { @Override public boolean equals(Object obj) { - if (obj instanceof AprilTag) { - var other = (AprilTag) obj; - return ID == other.ID && pose.equals(other.pose); - } - return false; + return obj instanceof AprilTag tag && ID == tag.ID && pose.equals(tag.pose); } @Override diff --git a/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagDetector.java b/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagDetector.java index a0774da171..8b0d5ca721 100644 --- a/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagDetector.java +++ b/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagDetector.java @@ -99,12 +99,8 @@ public class AprilTagDetector implements AutoCloseable { @Override public boolean equals(Object obj) { - if (!(obj instanceof Config)) { - return false; - } - - Config other = (Config) obj; - return numThreads == other.numThreads + return obj instanceof Config other + && numThreads == other.numThreads && quadDecimate == other.quadDecimate && quadSigma == other.quadSigma && refineEdges == other.refineEdges @@ -194,12 +190,8 @@ public class AprilTagDetector implements AutoCloseable { @Override public boolean equals(Object obj) { - if (!(obj instanceof QuadThresholdParameters)) { - return false; - } - - QuadThresholdParameters other = (QuadThresholdParameters) obj; - return minClusterPixels == other.minClusterPixels + return obj instanceof QuadThresholdParameters other + && minClusterPixels == other.minClusterPixels && maxNumMaxima == other.maxNumMaxima && criticalAngle == other.criticalAngle && maxLineFitMSE == other.maxLineFitMSE diff --git a/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagFieldLayout.java b/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagFieldLayout.java index f09d2626f1..b17a9c69f2 100644 --- a/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagFieldLayout.java +++ b/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagFieldLayout.java @@ -148,19 +148,14 @@ public class AprilTagFieldLayout { */ @JsonIgnore public final void setOrigin(OriginPosition origin) { - switch (origin) { - case kBlueAllianceWallRightSide: - setOrigin(Pose3d.kZero); - break; - case kRedAllianceWallRightSide: - setOrigin( - new Pose3d( - new Translation3d(m_fieldDimensions.fieldLength, m_fieldDimensions.fieldWidth, 0), - new Rotation3d(0, 0, Math.PI))); - break; - default: - throw new IllegalArgumentException("Unsupported enum value"); - } + var pose = + switch (origin) { + case kBlueAllianceWallRightSide -> Pose3d.kZero; + case kRedAllianceWallRightSide -> new Pose3d( + new Translation3d(m_fieldDimensions.fieldLength, m_fieldDimensions.fieldWidth, 0), + new Rotation3d(0, 0, Math.PI)); + }; + setOrigin(pose); } /** @@ -271,11 +266,9 @@ public class AprilTagFieldLayout { @Override public boolean equals(Object obj) { - if (obj instanceof AprilTagFieldLayout) { - var other = (AprilTagFieldLayout) obj; - return m_apriltags.equals(other.m_apriltags) && m_origin.equals(other.m_origin); - } - return false; + return obj instanceof AprilTagFieldLayout layout + && m_apriltags.equals(layout.m_apriltags) + && m_origin.equals(layout.m_origin); } @Override diff --git a/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagPoseEstimator.java b/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagPoseEstimator.java index 182f394a31..d0d8865a71 100644 --- a/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagPoseEstimator.java +++ b/apriltag/src/main/java/edu/wpi/first/apriltag/AprilTagPoseEstimator.java @@ -55,12 +55,8 @@ public class AprilTagPoseEstimator { @Override public boolean equals(Object obj) { - if (!(obj instanceof Config)) { - return false; - } - - Config other = (Config) obj; - return tagSize == other.tagSize + return obj instanceof Config other + && tagSize == other.tagSize && fx == other.fx && fy == other.fy && cx == other.cx diff --git a/cameraserver/src/main/java/edu/wpi/first/cameraserver/CameraServer.java b/cameraserver/src/main/java/edu/wpi/first/cameraserver/CameraServer.java index b0c01469d6..d0307f7899 100644 --- a/cameraserver/src/main/java/edu/wpi/first/cameraserver/CameraServer.java +++ b/cameraserver/src/main/java/edu/wpi/first/cameraserver/CameraServer.java @@ -94,24 +94,24 @@ public final class CameraServer { void update(VideoEvent event) { switch (event.propertyKind) { - case kBoolean: + case kBoolean -> { if (m_booleanValueEntry != null) { m_booleanValueEntry.set(event.value != 0); } - break; - case kInteger: - case kEnum: + } + case kInteger, kEnum -> { if (m_integerValueEntry != null) { m_integerValueEntry.set(event.value); } - break; - case kString: + } + case kString -> { if (m_stringValueEntry != null) { m_stringValueEntry.set(event.valueStr); } - break; - default: - break; + } + default -> { + // NOP + } } } @@ -231,112 +231,93 @@ public final class CameraServer { event -> { synchronized (CameraServer.class) { switch (event.kind) { - case kSourceCreated: - { - // Create subtable for the camera - NetworkTable table = m_publishTable.getSubTable(event.name); - m_publishers.put( - event.sourceHandle, new SourcePublisher(table, event.sourceHandle)); - break; + case kSourceCreated -> { + // Create subtable for the camera + NetworkTable table = m_publishTable.getSubTable(event.name); + m_publishers.put( + event.sourceHandle, new SourcePublisher(table, event.sourceHandle)); + } + case kSourceDestroyed -> { + SourcePublisher publisher = m_publishers.remove(event.sourceHandle); + if (publisher != null) { + try { + publisher.close(); + } catch (Exception e) { + // ignore (nothing we can do about it) + } } - case kSourceDestroyed: - { - SourcePublisher publisher = m_publishers.remove(event.sourceHandle); - if (publisher != null) { + } + case kSourceConnected -> { + SourcePublisher publisher = m_publishers.get(event.sourceHandle); + if (publisher != null) { + // update the description too (as it may have changed) + publisher.m_descriptionPublisher.set( + CameraServerJNI.getSourceDescription(event.sourceHandle)); + publisher.m_connectedPublisher.set(true); + } + } + case kSourceDisconnected -> { + SourcePublisher publisher = m_publishers.get(event.sourceHandle); + if (publisher != null) { + publisher.m_connectedPublisher.set(false); + } + } + case kSourceVideoModesUpdated -> { + SourcePublisher publisher = m_publishers.get(event.sourceHandle); + if (publisher != null) { + publisher.m_modesPublisher.set(getSourceModeValues(event.sourceHandle)); + } + } + case kSourceVideoModeChanged -> { + SourcePublisher publisher = m_publishers.get(event.sourceHandle); + if (publisher != null) { + publisher.m_modeEntry.set(videoModeToString(event.mode)); + } + } + case kSourcePropertyCreated -> { + SourcePublisher publisher = m_publishers.get(event.sourceHandle); + if (publisher != null) { + publisher.m_properties.put( + event.propertyHandle, new PropertyPublisher(publisher.m_table, event)); + } + } + case kSourcePropertyValueUpdated -> { + SourcePublisher publisher = m_publishers.get(event.sourceHandle); + if (publisher != null) { + PropertyPublisher pp = publisher.m_properties.get(event.propertyHandle); + if (pp != null) { + pp.update(event); + } + } + } + case kSourcePropertyChoicesUpdated -> { + SourcePublisher publisher = m_publishers.get(event.sourceHandle); + if (publisher != null) { + PropertyPublisher pp = publisher.m_properties.get(event.propertyHandle); + if (pp != null && pp.m_choicesTopic != null) { try { - publisher.close(); - } catch (Exception e) { - // ignore (nothing we can do about it) - } - } - break; - } - case kSourceConnected: - { - SourcePublisher publisher = m_publishers.get(event.sourceHandle); - if (publisher != null) { - // update the description too (as it may have changed) - publisher.m_descriptionPublisher.set( - CameraServerJNI.getSourceDescription(event.sourceHandle)); - publisher.m_connectedPublisher.set(true); - } - break; - } - case kSourceDisconnected: - { - SourcePublisher publisher = m_publishers.get(event.sourceHandle); - if (publisher != null) { - publisher.m_connectedPublisher.set(false); - } - break; - } - case kSourceVideoModesUpdated: - { - SourcePublisher publisher = m_publishers.get(event.sourceHandle); - if (publisher != null) { - publisher.m_modesPublisher.set(getSourceModeValues(event.sourceHandle)); - } - break; - } - case kSourceVideoModeChanged: - { - SourcePublisher publisher = m_publishers.get(event.sourceHandle); - if (publisher != null) { - publisher.m_modeEntry.set(videoModeToString(event.mode)); - } - break; - } - case kSourcePropertyCreated: - { - SourcePublisher publisher = m_publishers.get(event.sourceHandle); - if (publisher != null) { - publisher.m_properties.put( - event.propertyHandle, new PropertyPublisher(publisher.m_table, event)); - } - break; - } - case kSourcePropertyValueUpdated: - { - SourcePublisher publisher = m_publishers.get(event.sourceHandle); - if (publisher != null) { - PropertyPublisher pp = publisher.m_properties.get(event.propertyHandle); - if (pp != null) { - pp.update(event); - } - } - break; - } - case kSourcePropertyChoicesUpdated: - { - SourcePublisher publisher = m_publishers.get(event.sourceHandle); - if (publisher != null) { - PropertyPublisher pp = publisher.m_properties.get(event.propertyHandle); - if (pp != null && pp.m_choicesTopic != null) { - try { - String[] choices = - CameraServerJNI.getEnumPropertyChoices(event.propertyHandle); - if (pp.m_choicesPublisher == null) { - pp.m_choicesPublisher = pp.m_choicesTopic.publish(); - } - pp.m_choicesPublisher.set(choices); - } catch (VideoException ignored) { - // ignore (just don't publish choices if we can't get them) + String[] choices = + CameraServerJNI.getEnumPropertyChoices(event.propertyHandle); + if (pp.m_choicesPublisher == null) { + pp.m_choicesPublisher = pp.m_choicesTopic.publish(); } + pp.m_choicesPublisher.set(choices); + } catch (VideoException ignored) { + // ignore (just don't publish choices if we can't get them) } } - break; } - case kSinkSourceChanged: - case kSinkCreated: - case kSinkDestroyed: - case kNetworkInterfacesChanged: - { - m_addresses = CameraServerJNI.getNetworkInterfaces(); - updateStreamValues(); - break; - } - default: - break; + } + case kSinkSourceChanged, + kSinkCreated, + kSinkDestroyed, + kNetworkInterfacesChanged -> { + m_addresses = CameraServerJNI.getNetworkInterfaces(); + updateStreamValues(); + } + default -> { + // NOP + } } } }, @@ -352,25 +333,20 @@ public final class CameraServer { * @param source Source index. */ private static String makeSourceValue(int source) { - switch (VideoSource.getKindFromInt(CameraServerJNI.getSourceKind(source))) { - case kUsb: - return "usb:" + CameraServerJNI.getUsbCameraPath(source); - case kHttp: - { - String[] urls = CameraServerJNI.getHttpCameraUrls(source); - if (urls.length > 0) { - return "ip:" + urls[0]; - } else { - return "ip:"; - } + return switch (VideoSource.getKindFromInt(CameraServerJNI.getSourceKind(source))) { + case kUsb -> "usb:" + CameraServerJNI.getUsbCameraPath(source); + case kHttp -> { + String[] urls = CameraServerJNI.getHttpCameraUrls(source); + if (urls.length > 0) { + yield "ip:" + urls[0]; + } else { + yield "ip:"; } - case kCv: - return "cv:"; - case kRaw: - return "raw:"; - default: - return "unknown:"; - } + } + case kCv -> "cv:"; + case kRaw -> "raw:"; + case kUnknown -> "unknown:"; + }; } /** @@ -504,20 +480,17 @@ public final class CameraServer { /** Provide string description of pixel format. */ private static String pixelFormatToString(PixelFormat pixelFormat) { - switch (pixelFormat) { - case kMJPEG: - return "MJPEG"; - case kYUYV: - return "YUYV"; - case kRGB565: - return "RGB565"; - case kBGR: - return "BGR"; - case kGray: - return "Gray"; - default: - return "Unknown"; - } + return switch (pixelFormat) { + case kMJPEG -> "MJPEG"; + case kYUYV -> "YUYV"; + case kRGB565 -> "RGB565"; + case kBGR -> "BGR"; + case kBGRA -> "BGRA"; + case kGray -> "Gray"; + case kY16 -> "Y16"; + case kUYVY -> "UYVY"; + case kUnknown -> "Unknown"; + }; } /** diff --git a/cscore/java-examples/RawCVMatSink.java b/cscore/java-examples/RawCVMatSink.java index c0acc28451..686b8203d4 100644 --- a/cscore/java-examples/RawCVMatSink.java +++ b/cscore/java-examples/RawCVMatSink.java @@ -20,22 +20,12 @@ public class RawCVMatSink extends ImageSink { int bgrValue = PixelFormat.kBGR.getValue(); private int getCVFormat(PixelFormat pixelFormat) { - int type = 0; - switch (pixelFormat) { - case kYUYV: - case kRGB565: - type = CvType.CV_8UC2; - break; - case kBGR: - type = CvType.CV_8UC3; - break; - case kGray: - case kMJPEG: - default: - type = CvType.CV_8UC1; - break; - } - return type; + return switch (pixelFormat) { + case kYUYV, kRGB565, kY16, kUYVY -> CvType.CV_8UC2; + case kBGR -> CvType.CV_8UC3; + case kBGRA -> CvType.CV_8UC4; + case kGray, kMJPEG, kUnknown -> CvType.CV_8UC1; + }; } /** diff --git a/cscore/src/main/java/edu/wpi/first/cscore/CvSink.java b/cscore/src/main/java/edu/wpi/first/cscore/CvSink.java index a6db5978da..14e40ba140 100644 --- a/cscore/src/main/java/edu/wpi/first/cscore/CvSink.java +++ b/cscore/src/main/java/edu/wpi/first/cscore/CvSink.java @@ -32,27 +32,12 @@ public class CvSink extends ImageSink { } private int getCVFormat(PixelFormat pixelFormat) { - int type = 0; - switch (pixelFormat) { - case kYUYV: - case kRGB565: - case kY16: - case kUYVY: - type = CvType.CV_8UC2; - break; - case kBGR: - type = CvType.CV_8UC3; - break; - case kBGRA: - type = CvType.CV_8UC4; - break; - case kGray: - case kMJPEG: - default: - type = CvType.CV_8UC1; - break; - } - return type; + return switch (pixelFormat) { + case kYUYV, kRGB565, kY16, kUYVY -> CvType.CV_8UC2; + case kBGR -> CvType.CV_8UC3; + case kBGRA -> CvType.CV_8UC4; + case kGray, kMJPEG, kUnknown -> CvType.CV_8UC1; + }; } /** diff --git a/cscore/src/main/java/edu/wpi/first/cscore/CvSource.java b/cscore/src/main/java/edu/wpi/first/cscore/CvSource.java index f3bd147274..944b58f0eb 100644 --- a/cscore/src/main/java/edu/wpi/first/cscore/CvSource.java +++ b/cscore/src/main/java/edu/wpi/first/cscore/CvSource.java @@ -62,22 +62,15 @@ public class CvSource extends ImageSource { try { int channels = finalImage.channels(); - PixelFormat format; - if (channels == 1) { - // 1 channel is assumed Graysacle - format = PixelFormat.kGray; - } else if (channels == 2) { - // 2 channels is assumed YUYV - format = PixelFormat.kYUYV; - } else if (channels == 3) { - // 3 channels is assumed BGR - format = PixelFormat.kBGR; - } else if (channels == 4) { - // 4 channels is assumed BGRA - format = PixelFormat.kBGRA; - } else { - throw new VideoException("Unable to get pixel format for " + channels + " channels"); - } + PixelFormat format = + switch (channels) { + case 1 -> PixelFormat.kGray; // 1 channel is assumed Grayscale + case 2 -> PixelFormat.kYUYV; // 2 channels is assumed YUYV + case 3 -> PixelFormat.kBGR; // 3 channels is assumed BGR + case 4 -> PixelFormat.kBGRA; // 4 channels is assumed BGRA + default -> throw new VideoException( + "Unable to get pixel format for " + channels + " channels"); + }; putFrame(finalImage, format, true); } finally { diff --git a/cscore/src/main/java/edu/wpi/first/cscore/HttpCamera.java b/cscore/src/main/java/edu/wpi/first/cscore/HttpCamera.java index e34bf8455d..d1e2815748 100644 --- a/cscore/src/main/java/edu/wpi/first/cscore/HttpCamera.java +++ b/cscore/src/main/java/edu/wpi/first/cscore/HttpCamera.java @@ -40,16 +40,12 @@ public class HttpCamera extends VideoCamera { * @return The kind */ public static HttpCameraKind getHttpCameraKindFromInt(int kind) { - switch (kind) { - case 1: - return HttpCameraKind.kMJPGStreamer; - case 2: - return HttpCameraKind.kCSCore; - case 3: - return HttpCameraKind.kAxis; - default: - return HttpCameraKind.kUnknown; - } + return switch (kind) { + case 1 -> HttpCameraKind.kMJPGStreamer; + case 2 -> HttpCameraKind.kCSCore; + case 3 -> HttpCameraKind.kAxis; + default -> HttpCameraKind.kUnknown; + }; } /** diff --git a/cscore/src/main/java/edu/wpi/first/cscore/VideoEvent.java b/cscore/src/main/java/edu/wpi/first/cscore/VideoEvent.java index 03e9a34fb5..07445a0c77 100644 --- a/cscore/src/main/java/edu/wpi/first/cscore/VideoEvent.java +++ b/cscore/src/main/java/edu/wpi/first/cscore/VideoEvent.java @@ -75,48 +75,28 @@ public class VideoEvent { * @return The kind */ public static Kind getKindFromInt(int kind) { - switch (kind) { - case 0x0001: - return Kind.kSourceCreated; - case 0x0002: - return Kind.kSourceDestroyed; - case 0x0004: - return Kind.kSourceConnected; - case 0x0008: - return Kind.kSourceDisconnected; - case 0x0010: - return Kind.kSourceVideoModesUpdated; - case 0x0020: - return Kind.kSourceVideoModeChanged; - case 0x0040: - return Kind.kSourcePropertyCreated; - case 0x0080: - return Kind.kSourcePropertyValueUpdated; - case 0x0100: - return Kind.kSourcePropertyChoicesUpdated; - case 0x0200: - return Kind.kSinkSourceChanged; - case 0x0400: - return Kind.kSinkCreated; - case 0x0800: - return Kind.kSinkDestroyed; - case 0x1000: - return Kind.kSinkEnabled; - case 0x2000: - return Kind.kSinkDisabled; - case 0x4000: - return Kind.kNetworkInterfacesChanged; - case 0x10000: - return Kind.kSinkPropertyCreated; - case 0x20000: - return Kind.kSinkPropertyValueUpdated; - case 0x40000: - return Kind.kSinkPropertyChoicesUpdated; - case 0x80000: - return Kind.kUsbCamerasChanged; - default: - return Kind.kUnknown; - } + return switch (kind) { + case 0x0001 -> Kind.kSourceCreated; + case 0x0002 -> Kind.kSourceDestroyed; + case 0x0004 -> Kind.kSourceConnected; + case 0x0008 -> Kind.kSourceDisconnected; + case 0x0010 -> Kind.kSourceVideoModesUpdated; + case 0x0020 -> Kind.kSourceVideoModeChanged; + case 0x0040 -> Kind.kSourcePropertyCreated; + case 0x0080 -> Kind.kSourcePropertyValueUpdated; + case 0x0100 -> Kind.kSourcePropertyChoicesUpdated; + case 0x0200 -> Kind.kSinkSourceChanged; + case 0x0400 -> Kind.kSinkCreated; + case 0x0800 -> Kind.kSinkDestroyed; + case 0x1000 -> Kind.kSinkEnabled; + case 0x2000 -> Kind.kSinkDisabled; + case 0x4000 -> Kind.kNetworkInterfacesChanged; + case 0x10000 -> Kind.kSinkPropertyCreated; + case 0x20000 -> Kind.kSinkPropertyValueUpdated; + case 0x40000 -> Kind.kSinkPropertyChoicesUpdated; + case 0x80000 -> Kind.kUsbCamerasChanged; + default -> Kind.kUnknown; + }; } VideoEvent( diff --git a/cscore/src/main/java/edu/wpi/first/cscore/VideoProperty.java b/cscore/src/main/java/edu/wpi/first/cscore/VideoProperty.java index 6679ab0af9..21a1b8fb31 100644 --- a/cscore/src/main/java/edu/wpi/first/cscore/VideoProperty.java +++ b/cscore/src/main/java/edu/wpi/first/cscore/VideoProperty.java @@ -42,18 +42,13 @@ public class VideoProperty { * @return The kind */ public static Kind getKindFromInt(int kind) { - switch (kind) { - case 1: - return Kind.kBoolean; - case 2: - return Kind.kInteger; - case 4: - return Kind.kString; - case 8: - return Kind.kEnum; - default: - return Kind.kNone; - } + return switch (kind) { + case 1 -> Kind.kBoolean; + case 2 -> Kind.kInteger; + case 4 -> Kind.kString; + case 8 -> Kind.kEnum; + default -> Kind.kNone; + }; } /** diff --git a/cscore/src/main/java/edu/wpi/first/cscore/VideoSink.java b/cscore/src/main/java/edu/wpi/first/cscore/VideoSink.java index 5eced4c622..1421aa9b99 100644 --- a/cscore/src/main/java/edu/wpi/first/cscore/VideoSink.java +++ b/cscore/src/main/java/edu/wpi/first/cscore/VideoSink.java @@ -43,16 +43,12 @@ public class VideoSink implements AutoCloseable { * @return The kind */ public static Kind getKindFromInt(int kind) { - switch (kind) { - case 2: - return Kind.kMjpeg; - case 4: - return Kind.kCv; - case 8: - return Kind.kRaw; - default: - return Kind.kUnknown; - } + return switch (kind) { + case 2 -> Kind.kMjpeg; + case 4 -> Kind.kCv; + case 8 -> Kind.kRaw; + default -> Kind.kUnknown; + }; } /** diff --git a/cscore/src/main/java/edu/wpi/first/cscore/VideoSource.java b/cscore/src/main/java/edu/wpi/first/cscore/VideoSource.java index 7657eafa56..89f82b6e87 100644 --- a/cscore/src/main/java/edu/wpi/first/cscore/VideoSource.java +++ b/cscore/src/main/java/edu/wpi/first/cscore/VideoSource.java @@ -79,18 +79,13 @@ public class VideoSource implements AutoCloseable { * @return The kind */ public static Kind getKindFromInt(int kind) { - switch (kind) { - case 1: - return Kind.kUsb; - case 2: - return Kind.kHttp; - case 4: - return Kind.kCv; - case 8: - return Kind.kRaw; - default: - return Kind.kUnknown; - } + return switch (kind) { + case 1 -> Kind.kUsb; + case 2 -> Kind.kHttp; + case 4 -> Kind.kCv; + case 8 -> Kind.kRaw; + default -> Kind.kUnknown; + }; } /** diff --git a/hal/src/main/java/edu/wpi/first/hal/DriverStationJNI.java b/hal/src/main/java/edu/wpi/first/hal/DriverStationJNI.java index 26334e901a..55e0628cf8 100644 --- a/hal/src/main/java/edu/wpi/first/hal/DriverStationJNI.java +++ b/hal/src/main/java/edu/wpi/first/hal/DriverStationJNI.java @@ -162,24 +162,16 @@ public class DriverStationJNI extends JNIWrapper { * @see "HAL_GetAllianceStation" */ public static AllianceStationID getAllianceStation() { - switch (nativeGetAllianceStation()) { - case kUnknownAllianceStation: - return AllianceStationID.Unknown; - case kRed1AllianceStation: - return AllianceStationID.Red1; - case kRed2AllianceStation: - return AllianceStationID.Red2; - case kRed3AllianceStation: - return AllianceStationID.Red3; - case kBlue1AllianceStation: - return AllianceStationID.Blue1; - case kBlue2AllianceStation: - return AllianceStationID.Blue2; - case kBlue3AllianceStation: - return AllianceStationID.Blue3; - default: - return null; - } + return switch (nativeGetAllianceStation()) { + case kUnknownAllianceStation -> AllianceStationID.Unknown; + case kRed1AllianceStation -> AllianceStationID.Red1; + case kRed2AllianceStation -> AllianceStationID.Red2; + case kRed3AllianceStation -> AllianceStationID.Red3; + case kBlue1AllianceStation -> AllianceStationID.Blue1; + case kBlue2AllianceStation -> AllianceStationID.Blue2; + case kBlue3AllianceStation -> AllianceStationID.Blue3; + default -> null; + }; } public static final int kMaxJoystickAxes = 12; diff --git a/hal/src/main/java/edu/wpi/first/hal/HALValue.java b/hal/src/main/java/edu/wpi/first/hal/HALValue.java index 5f5441c03d..947ffc765c 100644 --- a/hal/src/main/java/edu/wpi/first/hal/HALValue.java +++ b/hal/src/main/java/edu/wpi/first/hal/HALValue.java @@ -145,19 +145,13 @@ public final class HALValue { * @return HAL value */ public static HALValue fromNative(int type, long value1, double value2) { - switch (type) { - case kBoolean: - return makeBoolean(value1 != 0); - case kDouble: - return makeDouble(value2); - case kEnum: - return makeEnum((int) value1); - case kInt: - return makeInt((int) value1); - case kLong: - return makeLong(value1); - default: - return makeUnassigned(); - } + return switch (type) { + case kBoolean -> makeBoolean(value1 != 0); + case kDouble -> makeDouble(value2); + case kEnum -> makeEnum((int) value1); + case kInt -> makeInt((int) value1); + case kLong -> makeLong(value1); + default -> makeUnassigned(); + }; } } diff --git a/hal/src/main/java/edu/wpi/first/hal/PowerDistributionFaults.java b/hal/src/main/java/edu/wpi/first/hal/PowerDistributionFaults.java index ffc27930f2..44271897fe 100644 --- a/hal/src/main/java/edu/wpi/first/hal/PowerDistributionFaults.java +++ b/hal/src/main/java/edu/wpi/first/hal/PowerDistributionFaults.java @@ -69,58 +69,34 @@ public class PowerDistributionFaults { * the hardware. */ public final boolean getBreakerFault(int channel) { - switch (channel) { - case 0: - return Channel0BreakerFault; - case 1: - return Channel1BreakerFault; - case 2: - return Channel2BreakerFault; - case 3: - return Channel3BreakerFault; - case 4: - return Channel4BreakerFault; - case 5: - return Channel5BreakerFault; - case 6: - return Channel6BreakerFault; - case 7: - return Channel7BreakerFault; - case 8: - return Channel8BreakerFault; - case 9: - return Channel9BreakerFault; - case 10: - return Channel10BreakerFault; - case 11: - return Channel11BreakerFault; - case 12: - return Channel12BreakerFault; - case 13: - return Channel13BreakerFault; - case 14: - return Channel14BreakerFault; - case 15: - return Channel15BreakerFault; - case 16: - return Channel16BreakerFault; - case 17: - return Channel17BreakerFault; - case 18: - return Channel18BreakerFault; - case 19: - return Channel19BreakerFault; - case 20: - return Channel20BreakerFault; - case 21: - return Channel21BreakerFault; - case 22: - return Channel22BreakerFault; - case 23: - return Channel23BreakerFault; - default: - throw new IndexOutOfBoundsException("Power distribution fault channel out of bounds!"); - } + return switch (channel) { + case 0 -> Channel0BreakerFault; + case 1 -> Channel1BreakerFault; + case 2 -> Channel2BreakerFault; + case 3 -> Channel3BreakerFault; + case 4 -> Channel4BreakerFault; + case 5 -> Channel5BreakerFault; + case 6 -> Channel6BreakerFault; + case 7 -> Channel7BreakerFault; + case 8 -> Channel8BreakerFault; + case 9 -> Channel9BreakerFault; + case 10 -> Channel10BreakerFault; + case 11 -> Channel11BreakerFault; + case 12 -> Channel12BreakerFault; + case 13 -> Channel13BreakerFault; + case 14 -> Channel14BreakerFault; + case 15 -> Channel15BreakerFault; + case 16 -> Channel16BreakerFault; + case 17 -> Channel17BreakerFault; + case 18 -> Channel18BreakerFault; + case 19 -> Channel19BreakerFault; + case 20 -> Channel20BreakerFault; + case 21 -> Channel21BreakerFault; + case 22 -> Channel22BreakerFault; + case 23 -> Channel23BreakerFault; + default -> throw new IndexOutOfBoundsException( + "Power distribution fault channel out of bounds!"); + }; } /** diff --git a/hal/src/main/java/edu/wpi/first/hal/PowerDistributionStickyFaults.java b/hal/src/main/java/edu/wpi/first/hal/PowerDistributionStickyFaults.java index 060fbf5a53..91e3473ef1 100644 --- a/hal/src/main/java/edu/wpi/first/hal/PowerDistributionStickyFaults.java +++ b/hal/src/main/java/edu/wpi/first/hal/PowerDistributionStickyFaults.java @@ -71,58 +71,34 @@ public class PowerDistributionStickyFaults { * the hardware. */ public final boolean getBreakerFault(int channel) { - switch (channel) { - case 0: - return Channel0BreakerFault; - case 1: - return Channel1BreakerFault; - case 2: - return Channel2BreakerFault; - case 3: - return Channel3BreakerFault; - case 4: - return Channel4BreakerFault; - case 5: - return Channel5BreakerFault; - case 6: - return Channel6BreakerFault; - case 7: - return Channel7BreakerFault; - case 8: - return Channel8BreakerFault; - case 9: - return Channel9BreakerFault; - case 10: - return Channel10BreakerFault; - case 11: - return Channel11BreakerFault; - case 12: - return Channel12BreakerFault; - case 13: - return Channel13BreakerFault; - case 14: - return Channel14BreakerFault; - case 15: - return Channel15BreakerFault; - case 16: - return Channel16BreakerFault; - case 17: - return Channel17BreakerFault; - case 18: - return Channel18BreakerFault; - case 19: - return Channel19BreakerFault; - case 20: - return Channel20BreakerFault; - case 21: - return Channel21BreakerFault; - case 22: - return Channel22BreakerFault; - case 23: - return Channel23BreakerFault; - default: - throw new IndexOutOfBoundsException("Power distribution fault channel out of bounds!"); - } + return switch (channel) { + case 0 -> Channel0BreakerFault; + case 1 -> Channel1BreakerFault; + case 2 -> Channel2BreakerFault; + case 3 -> Channel3BreakerFault; + case 4 -> Channel4BreakerFault; + case 5 -> Channel5BreakerFault; + case 6 -> Channel6BreakerFault; + case 7 -> Channel7BreakerFault; + case 8 -> Channel8BreakerFault; + case 9 -> Channel9BreakerFault; + case 10 -> Channel10BreakerFault; + case 11 -> Channel11BreakerFault; + case 12 -> Channel12BreakerFault; + case 13 -> Channel13BreakerFault; + case 14 -> Channel14BreakerFault; + case 15 -> Channel15BreakerFault; + case 16 -> Channel16BreakerFault; + case 17 -> Channel17BreakerFault; + case 18 -> Channel18BreakerFault; + case 19 -> Channel19BreakerFault; + case 20 -> Channel20BreakerFault; + case 21 -> Channel21BreakerFault; + case 22 -> Channel22BreakerFault; + case 23 -> Channel23BreakerFault; + default -> throw new IndexOutOfBoundsException( + "Power distribution fault channel out of bounds!"); + }; } /** diff --git a/hal/src/main/java/edu/wpi/first/hal/REVPHFaults.java b/hal/src/main/java/edu/wpi/first/hal/REVPHFaults.java index 931f8b78db..fab9b872b1 100644 --- a/hal/src/main/java/edu/wpi/first/hal/REVPHFaults.java +++ b/hal/src/main/java/edu/wpi/first/hal/REVPHFaults.java @@ -59,42 +59,25 @@ public class REVPHFaults { * the hardware. */ public final boolean getChannelFault(int channel) { - switch (channel) { - case 0: - return Channel0Fault; - case 1: - return Channel1Fault; - case 2: - return Channel2Fault; - case 3: - return Channel3Fault; - case 4: - return Channel4Fault; - case 5: - return Channel5Fault; - case 6: - return Channel6Fault; - case 7: - return Channel7Fault; - case 8: - return Channel8Fault; - case 9: - return Channel9Fault; - case 10: - return Channel10Fault; - case 11: - return Channel11Fault; - case 12: - return Channel12Fault; - case 13: - return Channel13Fault; - case 14: - return Channel14Fault; - case 15: - return Channel15Fault; - default: - throw new IndexOutOfBoundsException("Pneumatics fault channel out of bounds!"); - } + return switch (channel) { + case 0 -> Channel0Fault; + case 1 -> Channel1Fault; + case 2 -> Channel2Fault; + case 3 -> Channel3Fault; + case 4 -> Channel4Fault; + case 5 -> Channel5Fault; + case 6 -> Channel6Fault; + case 7 -> Channel7Fault; + case 8 -> Channel8Fault; + case 9 -> Channel9Fault; + case 10 -> Channel10Fault; + case 11 -> Channel11Fault; + case 12 -> Channel12Fault; + case 13 -> Channel13Fault; + case 14 -> Channel14Fault; + case 15 -> Channel15Fault; + default -> throw new IndexOutOfBoundsException("Pneumatics fault channel out of bounds!"); + }; } /** diff --git a/hal/src/main/java/edu/wpi/first/hal/can/CANExceptionFactory.java b/hal/src/main/java/edu/wpi/first/hal/can/CANExceptionFactory.java index a4ad1e2af0..d5b5688ce5 100644 --- a/hal/src/main/java/edu/wpi/first/hal/can/CANExceptionFactory.java +++ b/hal/src/main/java/edu/wpi/first/hal/can/CANExceptionFactory.java @@ -29,23 +29,19 @@ public final class CANExceptionFactory { */ public static void checkStatus(int status, int messageID) { switch (status) { - case NIRioStatus.kRioStatusSuccess: + case NIRioStatus.kRioStatusSuccess -> { // Everything is ok... don't throw. - return; - case ERR_CANSessionMux_InvalidBuffer: - case NIRioStatus.kRIOStatusBufferInvalidSize: - throw new CANInvalidBufferException(); - case ERR_CANSessionMux_MessageNotFound: - case NIRioStatus.kRIOStatusOperationTimedOut: - throw new CANMessageNotFoundException(); - case ERR_CANSessionMux_NotAllowed: - case NIRioStatus.kRIOStatusFeatureNotSupported: - throw new CANMessageNotAllowedException("MessageID = " + messageID); - case ERR_CANSessionMux_NotInitialized: - case NIRioStatus.kRIOStatusResourceNotInitialized: - throw new CANNotInitializedException(); - default: - throw new UncleanStatusException("Fatal status code detected: " + status); + } + case ERR_CANSessionMux_InvalidBuffer, + NIRioStatus.kRIOStatusBufferInvalidSize -> throw new CANInvalidBufferException(); + case ERR_CANSessionMux_MessageNotFound, + NIRioStatus.kRIOStatusOperationTimedOut -> throw new CANMessageNotFoundException(); + case ERR_CANSessionMux_NotAllowed, + NIRioStatus.kRIOStatusFeatureNotSupported -> throw new CANMessageNotAllowedException( + "MessageID = " + messageID); + case ERR_CANSessionMux_NotInitialized, + NIRioStatus.kRIOStatusResourceNotInitialized -> throw new CANNotInitializedException(); + default -> throw new UncleanStatusException("Fatal status code detected: " + status); } } diff --git a/ntcore/src/generate/main/java/NetworkTableInstance.java.jinja b/ntcore/src/generate/main/java/NetworkTableInstance.java.jinja index 145193e267..718f5c6bb3 100644 --- a/ntcore/src/generate/main/java/NetworkTableInstance.java.jinja +++ b/ntcore/src/generate/main/java/NetworkTableInstance.java.jinja @@ -179,8 +179,8 @@ public final class NetworkTableInstance implements AutoCloseable { */ public {{ t.TypeName }}Topic get{{ t.TypeName }}Topic(String name) { Topic topic = m_topics.get(name); - if (topic instanceof {{ t.TypeName }}Topic) { - return ({{ t.TypeName }}Topic) topic; + if (topic instanceof {{ t.TypeName }}Topic t) { + return t; } int handle; @@ -212,8 +212,7 @@ public final class NetworkTableInstance implements AutoCloseable { public > ProtobufTopic getProtobufTopic(String name, Protobuf proto) { Topic topic = m_topics.get(name); - if (topic instanceof ProtobufTopic - && ((ProtobufTopic) topic).getProto().equals(proto)) { + if (topic instanceof ProtobufTopic t && t.getProto().equals(proto)) { @SuppressWarnings("unchecked") ProtobufTopic wrapTopic = (ProtobufTopic) topic; return wrapTopic; @@ -246,8 +245,7 @@ public final class NetworkTableInstance implements AutoCloseable { public StructTopic getStructTopic(String name, Struct struct) { Topic topic = m_topics.get(name); - if (topic instanceof StructTopic - && ((StructTopic) topic).getStruct().equals(struct)) { + if (topic instanceof StructTopic t && t.getStruct().equals(struct)) { @SuppressWarnings("unchecked") StructTopic wrapTopic = (StructTopic) topic; return wrapTopic; @@ -280,8 +278,7 @@ public final class NetworkTableInstance implements AutoCloseable { public StructArrayTopic getStructArrayTopic(String name, Struct struct) { Topic topic = m_topics.get(name); - if (topic instanceof StructArrayTopic - && ((StructArrayTopic) topic).getStruct().equals(struct)) { + if (topic instanceof StructArrayTopic t && t.getStruct().equals(struct)) { @SuppressWarnings("unchecked") StructArrayTopic wrapTopic = (StructArrayTopic) topic; return wrapTopic; @@ -1245,11 +1242,7 @@ public final class NetworkTableInstance implements AutoCloseable { if (other == this) { return true; } - if (!(other instanceof NetworkTableInstance)) { - return false; - } - - return m_handle == ((NetworkTableInstance) other).m_handle; + return other instanceof NetworkTableInstance inst && m_handle == inst.m_handle; } @Override diff --git a/ntcore/src/generate/main/java/NetworkTableValue.java.jinja b/ntcore/src/generate/main/java/NetworkTableValue.java.jinja index cb97570a82..bc8e69cd07 100644 --- a/ntcore/src/generate/main/java/NetworkTableValue.java.jinja +++ b/ntcore/src/generate/main/java/NetworkTableValue.java.jinja @@ -157,11 +157,9 @@ public final class NetworkTableValue { if (other == this) { return true; } - if (!(other instanceof NetworkTableValue)) { - return false; - } - NetworkTableValue ntOther = (NetworkTableValue) other; - return m_type == ntOther.m_type && m_value.equals(ntOther.m_value); + return other instanceof NetworkTableValue ntOther + && m_type == ntOther.m_type + && m_value.equals(ntOther.m_value); } @Override diff --git a/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableInstance.java b/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableInstance.java index 344e061a82..faf0c42cdd 100644 --- a/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableInstance.java +++ b/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableInstance.java @@ -179,8 +179,8 @@ public final class NetworkTableInstance implements AutoCloseable { */ public BooleanTopic getBooleanTopic(String name) { Topic topic = m_topics.get(name); - if (topic instanceof BooleanTopic) { - return (BooleanTopic) topic; + if (topic instanceof BooleanTopic t) { + return t; } int handle; @@ -207,8 +207,8 @@ public final class NetworkTableInstance implements AutoCloseable { */ public IntegerTopic getIntegerTopic(String name) { Topic topic = m_topics.get(name); - if (topic instanceof IntegerTopic) { - return (IntegerTopic) topic; + if (topic instanceof IntegerTopic t) { + return t; } int handle; @@ -235,8 +235,8 @@ public final class NetworkTableInstance implements AutoCloseable { */ public FloatTopic getFloatTopic(String name) { Topic topic = m_topics.get(name); - if (topic instanceof FloatTopic) { - return (FloatTopic) topic; + if (topic instanceof FloatTopic t) { + return t; } int handle; @@ -263,8 +263,8 @@ public final class NetworkTableInstance implements AutoCloseable { */ public DoubleTopic getDoubleTopic(String name) { Topic topic = m_topics.get(name); - if (topic instanceof DoubleTopic) { - return (DoubleTopic) topic; + if (topic instanceof DoubleTopic t) { + return t; } int handle; @@ -291,8 +291,8 @@ public final class NetworkTableInstance implements AutoCloseable { */ public StringTopic getStringTopic(String name) { Topic topic = m_topics.get(name); - if (topic instanceof StringTopic) { - return (StringTopic) topic; + if (topic instanceof StringTopic t) { + return t; } int handle; @@ -319,8 +319,8 @@ public final class NetworkTableInstance implements AutoCloseable { */ public RawTopic getRawTopic(String name) { Topic topic = m_topics.get(name); - if (topic instanceof RawTopic) { - return (RawTopic) topic; + if (topic instanceof RawTopic t) { + return t; } int handle; @@ -347,8 +347,8 @@ public final class NetworkTableInstance implements AutoCloseable { */ public BooleanArrayTopic getBooleanArrayTopic(String name) { Topic topic = m_topics.get(name); - if (topic instanceof BooleanArrayTopic) { - return (BooleanArrayTopic) topic; + if (topic instanceof BooleanArrayTopic t) { + return t; } int handle; @@ -375,8 +375,8 @@ public final class NetworkTableInstance implements AutoCloseable { */ public IntegerArrayTopic getIntegerArrayTopic(String name) { Topic topic = m_topics.get(name); - if (topic instanceof IntegerArrayTopic) { - return (IntegerArrayTopic) topic; + if (topic instanceof IntegerArrayTopic t) { + return t; } int handle; @@ -403,8 +403,8 @@ public final class NetworkTableInstance implements AutoCloseable { */ public FloatArrayTopic getFloatArrayTopic(String name) { Topic topic = m_topics.get(name); - if (topic instanceof FloatArrayTopic) { - return (FloatArrayTopic) topic; + if (topic instanceof FloatArrayTopic t) { + return t; } int handle; @@ -431,8 +431,8 @@ public final class NetworkTableInstance implements AutoCloseable { */ public DoubleArrayTopic getDoubleArrayTopic(String name) { Topic topic = m_topics.get(name); - if (topic instanceof DoubleArrayTopic) { - return (DoubleArrayTopic) topic; + if (topic instanceof DoubleArrayTopic t) { + return t; } int handle; @@ -459,8 +459,8 @@ public final class NetworkTableInstance implements AutoCloseable { */ public StringArrayTopic getStringArrayTopic(String name) { Topic topic = m_topics.get(name); - if (topic instanceof StringArrayTopic) { - return (StringArrayTopic) topic; + if (topic instanceof StringArrayTopic t) { + return t; } int handle; @@ -492,8 +492,7 @@ public final class NetworkTableInstance implements AutoCloseable { public > ProtobufTopic getProtobufTopic(String name, Protobuf proto) { Topic topic = m_topics.get(name); - if (topic instanceof ProtobufTopic - && ((ProtobufTopic) topic).getProto().equals(proto)) { + if (topic instanceof ProtobufTopic t && t.getProto().equals(proto)) { @SuppressWarnings("unchecked") ProtobufTopic wrapTopic = (ProtobufTopic) topic; return wrapTopic; @@ -526,8 +525,7 @@ public final class NetworkTableInstance implements AutoCloseable { public StructTopic getStructTopic(String name, Struct struct) { Topic topic = m_topics.get(name); - if (topic instanceof StructTopic - && ((StructTopic) topic).getStruct().equals(struct)) { + if (topic instanceof StructTopic t && t.getStruct().equals(struct)) { @SuppressWarnings("unchecked") StructTopic wrapTopic = (StructTopic) topic; return wrapTopic; @@ -560,8 +558,7 @@ public final class NetworkTableInstance implements AutoCloseable { public StructArrayTopic getStructArrayTopic(String name, Struct struct) { Topic topic = m_topics.get(name); - if (topic instanceof StructArrayTopic - && ((StructArrayTopic) topic).getStruct().equals(struct)) { + if (topic instanceof StructArrayTopic t && t.getStruct().equals(struct)) { @SuppressWarnings("unchecked") StructArrayTopic wrapTopic = (StructArrayTopic) topic; return wrapTopic; @@ -1525,11 +1522,7 @@ public final class NetworkTableInstance implements AutoCloseable { if (other == this) { return true; } - if (!(other instanceof NetworkTableInstance)) { - return false; - } - - return m_handle == ((NetworkTableInstance) other).m_handle; + return other instanceof NetworkTableInstance inst && m_handle == inst.m_handle; } @Override diff --git a/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableValue.java b/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableValue.java index 3045d284a5..db76312c5a 100644 --- a/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableValue.java +++ b/ntcore/src/generated/main/java/edu/wpi/first/networktables/NetworkTableValue.java @@ -649,11 +649,9 @@ public final class NetworkTableValue { if (other == this) { return true; } - if (!(other instanceof NetworkTableValue)) { - return false; - } - NetworkTableValue ntOther = (NetworkTableValue) other; - return m_type == ntOther.m_type && m_value.equals(ntOther.m_value); + return other instanceof NetworkTableValue ntOther + && m_type == ntOther.m_type + && m_value.equals(ntOther.m_value); } @Override diff --git a/ntcore/src/main/java/edu/wpi/first/networktables/NetworkTable.java b/ntcore/src/main/java/edu/wpi/first/networktables/NetworkTable.java index a9768ff7e8..ddafeefe00 100644 --- a/ntcore/src/main/java/edu/wpi/first/networktables/NetworkTable.java +++ b/ntcore/src/main/java/edu/wpi/first/networktables/NetworkTable.java @@ -608,14 +608,9 @@ public final class NetworkTable { @Override public boolean equals(Object other) { - if (other == this) { - return true; - } - if (!(other instanceof NetworkTable)) { - return false; - } - NetworkTable ntOther = (NetworkTable) other; - return m_inst.equals(ntOther.m_inst) && m_path.equals(ntOther.m_path); + return other instanceof NetworkTable ntOther + && m_inst.equals(ntOther.m_inst) + && m_path.equals(ntOther.m_path); } @Override diff --git a/ntcore/src/main/java/edu/wpi/first/networktables/NetworkTableType.java b/ntcore/src/main/java/edu/wpi/first/networktables/NetworkTableType.java index 89a5413b1c..f84ab4e384 100644 --- a/ntcore/src/main/java/edu/wpi/first/networktables/NetworkTableType.java +++ b/ntcore/src/main/java/edu/wpi/first/networktables/NetworkTableType.java @@ -64,32 +64,20 @@ public enum NetworkTableType { * @return The kind */ public static NetworkTableType getFromInt(int value) { - switch (value) { - case 0x01: - return kBoolean; - case 0x02: - return kDouble; - case 0x04: - return kString; - case 0x08: - return kRaw; - case 0x10: - return kBooleanArray; - case 0x20: - return kDoubleArray; - case 0x40: - return kStringArray; - case 0x100: - return kInteger; - case 0x200: - return kFloat; - case 0x400: - return kIntegerArray; - case 0x800: - return kFloatArray; - default: - return kUnassigned; - } + return switch (value) { + case 0x01 -> kBoolean; + case 0x02 -> kDouble; + case 0x04 -> kString; + case 0x08 -> kRaw; + case 0x10 -> kBooleanArray; + case 0x20 -> kDoubleArray; + case 0x40 -> kStringArray; + case 0x100 -> kInteger; + case 0x200 -> kFloat; + case 0x400 -> kIntegerArray; + case 0x800 -> kFloatArray; + default -> kUnassigned; + }; } /** @@ -99,33 +87,20 @@ public enum NetworkTableType { * @return The kind */ public static NetworkTableType getFromString(String typeString) { - switch (typeString) { - case "boolean": - return kBoolean; - case "double": - return kDouble; - case "float": - return kFloat; - case "int": - return kInteger; - case "string": - case "json": - return kString; - case "boolean[]": - return kBooleanArray; - case "double[]": - return kDoubleArray; - case "float[]": - return kFloatArray; - case "int[]": - return kIntegerArray; - case "string[]": - return kStringArray; - case "": - return kUnassigned; - default: - return kRaw; - } + return switch (typeString) { + case "boolean" -> kBoolean; + case "double" -> kDouble; + case "float" -> kFloat; + case "int" -> kInteger; + case "string", "json" -> kString; + case "boolean[]" -> kBooleanArray; + case "double[]" -> kDoubleArray; + case "float[]" -> kFloatArray; + case "int[]" -> kIntegerArray; + case "string[]" -> kStringArray; + case "" -> kUnassigned; + default -> kRaw; + }; } /** diff --git a/ntcore/src/main/java/edu/wpi/first/networktables/ProtobufTopic.java b/ntcore/src/main/java/edu/wpi/first/networktables/ProtobufTopic.java index eb9a489d75..12da356882 100644 --- a/ntcore/src/main/java/edu/wpi/first/networktables/ProtobufTopic.java +++ b/ntcore/src/main/java/edu/wpi/first/networktables/ProtobufTopic.java @@ -167,11 +167,9 @@ public final class ProtobufTopic extends Topic { if (other == this) { return true; } - if (!(other instanceof ProtobufTopic)) { - return false; - } - - return super.equals(other) && m_proto == ((ProtobufTopic) other).m_proto; + return other instanceof ProtobufTopic topic + && super.equals(topic) + && m_proto == topic.m_proto; } @Override diff --git a/ntcore/src/main/java/edu/wpi/first/networktables/PubSubOptions.java b/ntcore/src/main/java/edu/wpi/first/networktables/PubSubOptions.java index ec9158af39..3adf9e6731 100644 --- a/ntcore/src/main/java/edu/wpi/first/networktables/PubSubOptions.java +++ b/ntcore/src/main/java/edu/wpi/first/networktables/PubSubOptions.java @@ -15,38 +15,19 @@ public class PubSubOptions { public PubSubOptions(PubSubOption... options) { for (PubSubOption option : options) { switch (option.m_kind) { - case periodic: - periodic = option.m_dValue; - break; - case sendAll: - sendAll = option.m_bValue; - break; - case topicsOnly: - topicsOnly = option.m_bValue; - break; - case pollStorage: - pollStorage = option.m_iValue; - break; - case keepDuplicates: - keepDuplicates = option.m_bValue; - break; - case disableRemote: - disableRemote = option.m_bValue; - break; - case disableLocal: - disableLocal = option.m_bValue; - break; - case excludePublisher: - excludePublisher = option.m_iValue; - break; - case excludeSelf: - excludeSelf = option.m_bValue; - break; - case hidden: - hidden = option.m_bValue; - break; - default: - break; + case periodic -> periodic = option.m_dValue; + case sendAll -> sendAll = option.m_bValue; + case topicsOnly -> topicsOnly = option.m_bValue; + case pollStorage -> pollStorage = option.m_iValue; + case keepDuplicates -> keepDuplicates = option.m_bValue; + case disableRemote -> disableRemote = option.m_bValue; + case disableLocal -> disableLocal = option.m_bValue; + case excludePublisher -> excludePublisher = option.m_iValue; + case excludeSelf -> excludeSelf = option.m_bValue; + case hidden -> hidden = option.m_bValue; + default -> { + // NOP + } } } } diff --git a/ntcore/src/main/java/edu/wpi/first/networktables/StructArrayTopic.java b/ntcore/src/main/java/edu/wpi/first/networktables/StructArrayTopic.java index 6f22179258..7aacd1d68a 100644 --- a/ntcore/src/main/java/edu/wpi/first/networktables/StructArrayTopic.java +++ b/ntcore/src/main/java/edu/wpi/first/networktables/StructArrayTopic.java @@ -167,11 +167,9 @@ public final class StructArrayTopic extends Topic { if (other == this) { return true; } - if (!(other instanceof StructArrayTopic)) { - return false; - } - - return super.equals(other) && m_struct == ((StructArrayTopic) other).m_struct; + return other instanceof StructArrayTopic topic + && super.equals(topic) + && m_struct == topic.m_struct; } @Override diff --git a/ntcore/src/main/java/edu/wpi/first/networktables/StructTopic.java b/ntcore/src/main/java/edu/wpi/first/networktables/StructTopic.java index 1212ead700..8dcf2e6df8 100644 --- a/ntcore/src/main/java/edu/wpi/first/networktables/StructTopic.java +++ b/ntcore/src/main/java/edu/wpi/first/networktables/StructTopic.java @@ -166,11 +166,9 @@ public final class StructTopic extends Topic { if (other == this) { return true; } - if (!(other instanceof StructTopic)) { - return false; - } - - return super.equals(other) && m_struct == ((StructTopic) other).m_struct; + return other instanceof StructTopic topic + && super.equals(topic) + && m_struct == topic.m_struct; } @Override diff --git a/ntcore/src/main/java/edu/wpi/first/networktables/Topic.java b/ntcore/src/main/java/edu/wpi/first/networktables/Topic.java index 358814c4c2..ae548c52ae 100644 --- a/ntcore/src/main/java/edu/wpi/first/networktables/Topic.java +++ b/ntcore/src/main/java/edu/wpi/first/networktables/Topic.java @@ -321,14 +321,7 @@ public class Topic { @Override public boolean equals(Object other) { - if (other == this) { - return true; - } - if (!(other instanceof Topic)) { - return false; - } - - return m_handle == ((Topic) other).m_handle; + return other instanceof Topic topic && m_handle == topic.m_handle; } @Override diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16448_IMU.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16448_IMU.java index 6117b8816a..fdb553714d 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16448_IMU.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16448_IMU.java @@ -1057,16 +1057,11 @@ public class ADIS16448_IMU implements AutoCloseable, Sendable { * @return Yaw axis angle in degrees (CCW positive). */ public synchronized double getAngle() { - switch (m_yaw_axis) { - case kX: - return getGyroAngleX(); - case kY: - return getGyroAngleY(); - case kZ: - return getGyroAngleZ(); - default: - return 0.0; - } + return switch (m_yaw_axis) { + case kX -> getGyroAngleX(); + case kY -> getGyroAngleY(); + case kZ -> getGyroAngleZ(); + }; } /** @@ -1075,16 +1070,11 @@ public class ADIS16448_IMU implements AutoCloseable, Sendable { * @return Yaw axis angular rate in degrees per second (CCW positive). */ public synchronized double getRate() { - switch (m_yaw_axis) { - case kX: - return getGyroRateX(); - case kY: - return getGyroRateY(); - case kZ: - return getGyroRateZ(); - default: - return 0.0; - } + return switch (m_yaw_axis) { + case kX -> getGyroRateX(); + case kY -> getGyroRateY(); + case kZ -> getGyroRateZ(); + }; } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16470_IMU.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16470_IMU.java index c51d209cea..b3cc31c51c 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16470_IMU.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADIS16470_IMU.java @@ -1061,30 +1061,21 @@ public class ADIS16470_IMU implements AutoCloseable, Sendable { * @param angle A double in degrees (CCW positive) */ public void setGyroAngle(IMUAxis axis, double angle) { - switch (axis) { - case kYaw: - axis = m_yaw_axis; - break; - case kPitch: - axis = m_pitch_axis; - break; - case kRoll: - axis = m_roll_axis; - break; - default: - } + axis = + switch (axis) { + case kYaw -> m_yaw_axis; + case kPitch -> m_pitch_axis; + case kRoll -> m_roll_axis; + default -> axis; + }; switch (axis) { - case kX: - this.setGyroAngleX(angle); - break; - case kY: - this.setGyroAngleY(angle); - break; - case kZ: - this.setGyroAngleZ(angle); - break; - default: + case kX -> setGyroAngleX(angle); + case kY -> setGyroAngleY(angle); + case kZ -> setGyroAngleZ(angle); + default -> { + // NOP + } } } @@ -1131,39 +1122,35 @@ public class ADIS16470_IMU implements AutoCloseable, Sendable { * @return The axis angle in degrees (CCW positive). */ public synchronized double getAngle(IMUAxis axis) { - switch (axis) { - case kYaw: - axis = m_yaw_axis; - break; - case kPitch: - axis = m_pitch_axis; - break; - case kRoll: - axis = m_roll_axis; - break; - default: - } + axis = + switch (axis) { + case kYaw -> m_yaw_axis; + case kPitch -> m_pitch_axis; + case kRoll -> m_roll_axis; + default -> axis; + }; - switch (axis) { - case kX: + return switch (axis) { + case kX -> { if (m_simGyroAngleX != null) { - return m_simGyroAngleX.get(); + yield m_simGyroAngleX.get(); } - return m_integ_angle_x; - case kY: + yield m_integ_angle_x; + } + case kY -> { if (m_simGyroAngleY != null) { - return m_simGyroAngleY.get(); + yield m_simGyroAngleY.get(); } - return m_integ_angle_y; - case kZ: + yield m_integ_angle_y; + } + case kZ -> { if (m_simGyroAngleZ != null) { - return m_simGyroAngleZ.get(); + yield m_simGyroAngleZ.get(); } - return m_integ_angle_z; - default: - } - - return 0.0; + yield m_integ_angle_z; + } + default -> 0.0; + }; } /** @@ -1172,25 +1159,27 @@ public class ADIS16470_IMU implements AutoCloseable, Sendable { * @return The Yaw axis angle in degrees (CCW positive). */ public synchronized double getAngle() { - switch (m_yaw_axis) { - case kX: + return switch (m_yaw_axis) { + case kX -> { if (m_simGyroAngleX != null) { - return m_simGyroAngleX.get(); + yield m_simGyroAngleX.get(); } - return m_integ_angle_x; - case kY: + yield m_integ_angle_x; + } + case kY -> { if (m_simGyroAngleY != null) { - return m_simGyroAngleY.get(); + yield m_simGyroAngleY.get(); } - return m_integ_angle_y; - case kZ: + yield m_integ_angle_y; + } + case kZ -> { if (m_simGyroAngleZ != null) { - return m_simGyroAngleZ.get(); + yield m_simGyroAngleZ.get(); } - return m_integ_angle_z; - default: - } - return 0.0; + yield m_integ_angle_z; + } + default -> 0.0; + }; } /** @@ -1200,38 +1189,35 @@ public class ADIS16470_IMU implements AutoCloseable, Sendable { * @return Axis angular rate in degrees per second (CCW positive). */ public synchronized double getRate(IMUAxis axis) { - switch (axis) { - case kYaw: - axis = m_yaw_axis; - break; - case kPitch: - axis = m_pitch_axis; - break; - case kRoll: - axis = m_roll_axis; - break; - default: - } + axis = + switch (axis) { + case kYaw -> m_yaw_axis; + case kPitch -> m_pitch_axis; + case kRoll -> m_roll_axis; + default -> axis; + }; - switch (axis) { - case kX: + return switch (axis) { + case kX -> { if (m_simGyroRateX != null) { - return m_simGyroRateX.get(); + yield m_simGyroRateX.get(); } - return m_gyro_rate_x; - case kY: + yield m_gyro_rate_x; + } + case kY -> { if (m_simGyroRateY != null) { - return m_simGyroRateY.get(); + yield m_simGyroRateY.get(); } - return m_gyro_rate_y; - case kZ: + yield m_gyro_rate_y; + } + case kZ -> { if (m_simGyroRateZ != null) { - return m_simGyroRateZ.get(); + yield m_simGyroRateZ.get(); } - return m_gyro_rate_z; - default: - } - return 0.0; + yield m_gyro_rate_z; + } + default -> 0.0; + }; } /** @@ -1240,25 +1226,27 @@ public class ADIS16470_IMU implements AutoCloseable, Sendable { * @return Yaw axis angular rate in degrees per second (CCW positive). */ public synchronized double getRate() { - switch (m_yaw_axis) { - case kX: + return switch (m_yaw_axis) { + case kX -> { if (m_simGyroRateX != null) { - return m_simGyroRateX.get(); + yield m_simGyroRateX.get(); } - return m_gyro_rate_x; - case kY: + yield m_gyro_rate_x; + } + case kY -> { if (m_simGyroRateY != null) { - return m_simGyroRateY.get(); + yield m_simGyroRateY.get(); } - return m_gyro_rate_y; - case kZ: + yield m_gyro_rate_y; + } + case kZ -> { if (m_simGyroRateZ != null) { - return m_simGyroRateZ.get(); + yield m_simGyroRateZ.get(); } - return m_gyro_rate_z; - default: - } - return 0.0; + yield m_gyro_rate_z; + } + default -> 0.0; + }; } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXL345_I2C.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXL345_I2C.java index 357618b7f4..df5ee80db6 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXL345_I2C.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXL345_I2C.java @@ -182,23 +182,13 @@ public class ADXL345_I2C implements NTSendable, AutoCloseable { * measure. */ public final void setRange(Range range) { - final byte value; - switch (range) { - case k2G: - value = 0; - break; - case k4G: - value = 1; - break; - case k8G: - value = 2; - break; - case k16G: - value = 3; - break; - default: - throw new IllegalArgumentException("Missing case for range type " + range); - } + final byte value = + switch (range) { + case k2G -> 0; + case k4G -> 1; + case k8G -> 2; + case k16G -> 3; + }; // Specify the data format to read m_i2c.write(kDataFormatRegister, kDataFormat_FullRes | value); diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXL345_SPI.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXL345_SPI.java index 29a20cbd5c..a64d904d21 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXL345_SPI.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXL345_SPI.java @@ -171,23 +171,13 @@ public class ADXL345_SPI implements NTSendable, AutoCloseable { * measure. */ public void setRange(Range range) { - final byte value; - switch (range) { - case k2G: - value = 0; - break; - case k4G: - value = 1; - break; - case k8G: - value = 2; - break; - case k16G: - value = 3; - break; - default: - throw new IllegalArgumentException("Missing case for range type " + range); - } + final byte value = + switch (range) { + case k2G -> 0; + case k4G -> 1; + case k8G -> 2; + case k16G -> 3; + }; // Specify the data format to read byte[] commands = new byte[] {kDataFormatRegister, (byte) (kDataFormat_FullRes | value)}; diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXL362.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXL362.java index b00ea2b8f6..f33dc7c7a7 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXL362.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXL362.java @@ -193,23 +193,21 @@ public class ADXL362 implements NTSendable, AutoCloseable { return; } - final byte value; - switch (range) { - case k2G: - value = kFilterCtl_Range2G; - m_gsPerLSB = 0.001; - break; - case k4G: - value = kFilterCtl_Range4G; - m_gsPerLSB = 0.002; - break; - case k8G: - value = kFilterCtl_Range8G; - m_gsPerLSB = 0.004; - break; - default: - throw new IllegalArgumentException("Missing case for range type " + range); - } + final byte value = + switch (range) { + case k2G -> { + m_gsPerLSB = 0.001; + yield kFilterCtl_Range2G; + } + case k4G -> { + m_gsPerLSB = 0.002; + yield kFilterCtl_Range4G; + } + case k8G -> { + m_gsPerLSB = 0.004; + yield kFilterCtl_Range8G; + } + }; // Specify the data format to read byte[] commands = diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/AddressableLEDBuffer.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/AddressableLEDBuffer.java index 68644a0583..f751a31a5e 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/AddressableLEDBuffer.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/AddressableLEDBuffer.java @@ -74,24 +74,12 @@ public class AddressableLEDBuffer { final int X = (chroma * remainder) >> 8; switch (region) { - case 0: - setRGB(index, v, X + m, m); - break; - case 1: - setRGB(index, v - X, v, m); - break; - case 2: - setRGB(index, m, v, X + m); - break; - case 3: - setRGB(index, m, v - X, v); - break; - case 4: - setRGB(index, X + m, m, v); - break; - default: - setRGB(index, v, m, v - X); - break; + case 0 -> setRGB(index, v, X + m, m); + case 1 -> setRGB(index, v - X, v, m); + case 2 -> setRGB(index, m, v, X + m); + case 3 -> setRGB(index, m, v - X, v); + case 4 -> setRGB(index, X + m, m, v); + default -> setRGB(index, v, m, v - X); } } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/AsynchronousInterrupt.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/AsynchronousInterrupt.java index 03bf1dc44b..f64284f61a 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/AsynchronousInterrupt.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/AsynchronousInterrupt.java @@ -6,7 +6,6 @@ package edu.wpi.first.wpilibj; import static edu.wpi.first.util.ErrorMessages.requireNonNullParam; -import edu.wpi.first.wpilibj.SynchronousInterrupt.WaitResult; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.BiConsumer; @@ -132,25 +131,22 @@ public class AsynchronousInterrupt implements AutoCloseable { if (!m_keepRunning.get()) { break; } - if (result == WaitResult.kTimeout) { - continue; - } - boolean rising = false; boolean falling = false; switch (result) { - case kBoth: + case kBoth -> { rising = true; falling = true; - break; - case kFallingEdge: + } + case kFallingEdge -> { falling = true; - break; - case kRisingEdge: + } + case kRisingEdge -> { rising = true; - break; - default: - break; + } + default -> { + continue; + } } m_callback.accept(rising, falling); diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/BuiltInAccelerometer.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/BuiltInAccelerometer.java index 522ab88476..a84e47eac8 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/BuiltInAccelerometer.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/BuiltInAccelerometer.java @@ -58,20 +58,14 @@ public class BuiltInAccelerometer implements Sendable, AutoCloseable { public final void setRange(Range range) { AccelerometerJNI.setAccelerometerActive(false); - switch (range) { - case k2G: - AccelerometerJNI.setAccelerometerRange(0); - break; - case k4G: - AccelerometerJNI.setAccelerometerRange(1); - break; - case k8G: - AccelerometerJNI.setAccelerometerRange(2); - break; - default: - throw new IllegalArgumentException("Missing case for range type " + range); - } + int rangeValue = + switch (range) { + case k2G -> 0; + case k4G -> 1; + case k8G -> 2; + }; + AccelerometerJNI.setAccelerometerRange(rangeValue); AccelerometerJNI.setAccelerometerActive(true); } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/CompressorConfigType.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/CompressorConfigType.java index 7735cdd579..be7847b6c1 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/CompressorConfigType.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/CompressorConfigType.java @@ -31,16 +31,12 @@ public enum CompressorConfigType { * @return type */ public static CompressorConfigType fromValue(int value) { - switch (value) { - case REVPHJNI.COMPRESSOR_CONFIG_TYPE_HYBRID: - return Hybrid; - case REVPHJNI.COMPRESSOR_CONFIG_TYPE_ANALOG: - return Analog; - case REVPHJNI.COMPRESSOR_CONFIG_TYPE_DIGITAL: - return Digital; - default: - return Disabled; - } + return switch (value) { + case REVPHJNI.COMPRESSOR_CONFIG_TYPE_HYBRID -> Hybrid; + case REVPHJNI.COMPRESSOR_CONFIG_TYPE_ANALOG -> Analog; + case REVPHJNI.COMPRESSOR_CONFIG_TYPE_DIGITAL -> Digital; + default -> Disabled; + }; } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DataLogManager.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DataLogManager.java index 8543b05cc1..3b6bbd61c6 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DataLogManager.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DataLogManager.java @@ -382,21 +382,13 @@ public final class DataLogManager { DriverStation.MatchType matchType = DriverStation.getMatchType(); if (matchType != DriverStation.MatchType.None) { // rename per match info - char matchTypeChar; - switch (matchType) { - case Practice: - matchTypeChar = 'P'; - break; - case Qualification: - matchTypeChar = 'Q'; - break; - case Elimination: - matchTypeChar = 'E'; - break; - default: - matchTypeChar = '_'; - break; - } + char matchTypeChar = + switch (matchType) { + case Practice -> 'P'; + case Qualification -> 'Q'; + case Elimination -> 'E'; + default -> '_'; + }; m_log.setFilename( "FRC_" + m_timeFormatter.format(LocalDateTime.now(m_utc)) diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DoubleSolenoid.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DoubleSolenoid.java index de0697ccde..aab8b1e106 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DoubleSolenoid.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DoubleSolenoid.java @@ -125,21 +125,12 @@ public class DoubleSolenoid implements Sendable, AutoCloseable { * @param value The value to set (Off, Forward, Reverse) */ public void set(final Value value) { - int setValue; - - switch (value) { - case kOff: - setValue = 0; - break; - case kForward: - setValue = m_forwardMask; - break; - case kReverse: - setValue = m_reverseMask; - break; - default: - throw new AssertionError("Illegal value: " + value); - } + int setValue = + switch (value) { + case kOff -> 0; + case kForward -> m_forwardMask; + case kReverse -> m_reverseMask; + }; m_module.setSolenoids(m_mask, setValue); } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DriverStation.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DriverStation.java index cbe4da8ac3..2213f2604b 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DriverStation.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DriverStation.java @@ -137,34 +137,17 @@ public final class DriverStation { private void sendMatchData() { AllianceStationID allianceID = DriverStationJNI.getAllianceStation(); - boolean isRedAlliance = false; - int stationNumber = 1; - switch (allianceID) { - case Blue1: - isRedAlliance = false; - stationNumber = 1; - break; - case Blue2: - isRedAlliance = false; - stationNumber = 2; - break; - case Blue3: - isRedAlliance = false; - stationNumber = 3; - break; - case Red1: - isRedAlliance = true; - stationNumber = 1; - break; - case Red2: - isRedAlliance = true; - stationNumber = 2; - break; - default: - isRedAlliance = true; - stationNumber = 3; - break; - } + final int stationNumber = + switch (allianceID) { + case Blue1, Red1 -> 1; + case Blue2, Red2 -> 2; + case Blue3, Red3, Unknown -> 3; + }; + final boolean isRedAlliance = + switch (allianceID) { + case Blue1, Blue2, Blue3 -> false; + case Red1, Red2, Red3, Unknown -> true; + }; String currentEventName; String currentGameSpecificMessage; @@ -1059,16 +1042,12 @@ public final class DriverStation { } finally { m_cacheDataMutex.unlock(); } - switch (matchType) { - case 1: - return MatchType.Practice; - case 2: - return MatchType.Qualification; - case 3: - return MatchType.Elimination; - default: - return MatchType.None; - } + return switch (matchType) { + case 1 -> MatchType.Practice; + case 2 -> MatchType.Qualification; + case 3 -> MatchType.Elimination; + default -> MatchType.None; + }; } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Encoder.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Encoder.java index 0aa667ea1f..76b0b4bb10 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Encoder.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Encoder.java @@ -562,16 +562,11 @@ public class Encoder implements CounterBase, Sendable, AutoCloseable { * @return decoding scale factor */ public double getDecodingScaleFactor() { - switch (m_encodingType) { - case k1X: - return 1.0; - case k2X: - return 0.5; - case k4X: - return 0.25; - default: - return 0.0; - } + return switch (m_encodingType) { + case k1X -> 1.0; + case k2X -> 0.5; + case k4X -> 0.25; + }; } @Override diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/GenericHID.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/GenericHID.java index ded73f0226..ceb00a780b 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/GenericHID.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/GenericHID.java @@ -457,17 +457,12 @@ public class GenericHID { value = MathUtil.clamp(value, 0, 1); int rumbleValue = (int) (value * 65535); switch (type) { - case kLeftRumble: - this.m_leftRumble = rumbleValue; - break; - case kRightRumble: - this.m_rightRumble = rumbleValue; - break; - case kBothRumble: - default: + case kLeftRumble -> this.m_leftRumble = rumbleValue; + case kRightRumble -> this.m_rightRumble = rumbleValue; + default -> { this.m_leftRumble = rumbleValue; this.m_rightRumble = rumbleValue; - break; + } } DriverStationJNI.setJoystickOutputs( diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/IterativeRobotBase.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/IterativeRobotBase.java index ee4b34012a..e786954470 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/IterativeRobotBase.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/IterativeRobotBase.java @@ -323,59 +323,77 @@ public abstract class IterativeRobotBase extends RobotBase { // If mode changed, call mode exit and entry functions if (m_lastMode != mode) { // Call last mode's exit function - if (m_lastMode == Mode.kDisabled) { - disabledExit(); - } else if (m_lastMode == Mode.kAutonomous) { - autonomousExit(); - } else if (m_lastMode == Mode.kTeleop) { - teleopExit(); - } else if (m_lastMode == Mode.kTest) { - if (m_lwEnabledInTest) { - LiveWindow.setEnabled(false); - Shuffleboard.disableActuatorWidgets(); + switch (m_lastMode) { + case kDisabled -> disabledExit(); + case kAutonomous -> autonomousExit(); + case kTeleop -> teleopExit(); + case kTest -> { + if (m_lwEnabledInTest) { + LiveWindow.setEnabled(false); + Shuffleboard.disableActuatorWidgets(); + } + testExit(); + } + default -> { + // NOP } - testExit(); } // Call current mode's entry function - if (mode == Mode.kDisabled) { - disabledInit(); - m_watchdog.addEpoch("disabledInit()"); - } else if (mode == Mode.kAutonomous) { - autonomousInit(); - m_watchdog.addEpoch("autonomousInit()"); - } else if (mode == Mode.kTeleop) { - teleopInit(); - m_watchdog.addEpoch("teleopInit()"); - } else if (mode == Mode.kTest) { - if (m_lwEnabledInTest) { - LiveWindow.setEnabled(true); - Shuffleboard.enableActuatorWidgets(); + switch (mode) { + case kDisabled -> { + disabledInit(); + m_watchdog.addEpoch("disabledInit()"); + } + case kAutonomous -> { + autonomousInit(); + m_watchdog.addEpoch("autonomousInit()"); + } + case kTeleop -> { + teleopInit(); + m_watchdog.addEpoch("teleopInit()"); + } + case kTest -> { + if (m_lwEnabledInTest) { + LiveWindow.setEnabled(true); + Shuffleboard.enableActuatorWidgets(); + } + testInit(); + m_watchdog.addEpoch("testInit()"); + } + default -> { + // NOP } - testInit(); - m_watchdog.addEpoch("testInit()"); } m_lastMode = mode; } // Call the appropriate function depending upon the current robot mode - if (mode == Mode.kDisabled) { - DriverStationJNI.observeUserProgramDisabled(); - disabledPeriodic(); - m_watchdog.addEpoch("disabledPeriodic()"); - } else if (mode == Mode.kAutonomous) { - DriverStationJNI.observeUserProgramAutonomous(); - autonomousPeriodic(); - m_watchdog.addEpoch("autonomousPeriodic()"); - } else if (mode == Mode.kTeleop) { - DriverStationJNI.observeUserProgramTeleop(); - teleopPeriodic(); - m_watchdog.addEpoch("teleopPeriodic()"); - } else { - DriverStationJNI.observeUserProgramTest(); - testPeriodic(); - m_watchdog.addEpoch("testPeriodic()"); + switch (mode) { + case kDisabled -> { + DriverStationJNI.observeUserProgramDisabled(); + disabledPeriodic(); + m_watchdog.addEpoch("disabledPeriodic()"); + } + case kAutonomous -> { + DriverStationJNI.observeUserProgramAutonomous(); + autonomousPeriodic(); + m_watchdog.addEpoch("autonomousPeriodic()"); + } + case kTeleop -> { + DriverStationJNI.observeUserProgramTeleop(); + teleopPeriodic(); + m_watchdog.addEpoch("teleopPeriodic()"); + } + case kTest -> { + DriverStationJNI.observeUserProgramTest(); + testPeriodic(); + m_watchdog.addEpoch("testPeriodic()"); + } + default -> { + // NOP + } } robotPeriodic(); diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/PWM.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PWM.java index af600eca0a..fa4218a023 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/PWM.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PWM.java @@ -211,22 +211,14 @@ public class PWM implements Sendable, AutoCloseable { * @param mult The period multiplier to apply to this channel */ public void setPeriodMultiplier(PeriodMultiplier mult) { - switch (mult) { - case k4X: - // Squelch 3 out of 4 outputs - PWMJNI.setPWMPeriodScale(m_handle, 3); - break; - case k2X: - // Squelch 1 out of 2 outputs - PWMJNI.setPWMPeriodScale(m_handle, 1); - break; - case k1X: - // Don't squelch any outputs - PWMJNI.setPWMPeriodScale(m_handle, 0); - break; - default: - // Cannot hit this, limited by PeriodMultiplier enum - } + int scale = + switch (mult) { + case k4X -> 3; // Squelch 3 out of 4 outputs + case k2X -> 1; // Squelch 1 out of 2 outputs + case k1X -> 0; // Don't squelch any outputs + }; + + PWMJNI.setPWMPeriodScale(m_handle, scale); } /** Latches PWM to zero. */ diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/PneumaticsBase.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PneumaticsBase.java index 90f49f53b4..4f4a8973eb 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/PneumaticsBase.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PneumaticsBase.java @@ -14,12 +14,10 @@ public interface PneumaticsBase extends AutoCloseable { * @return module */ static PneumaticsBase getForType(int module, PneumaticsModuleType type) { - if (type == PneumaticsModuleType.CTREPCM) { - return new PneumaticsControlModule(module); - } else if (type == PneumaticsModuleType.REVPH) { - return new PneumaticHub(module); - } - throw new IllegalArgumentException("Unknown module type"); + return switch (type) { + case CTREPCM -> new PneumaticsControlModule(module); + case REVPH -> new PneumaticHub(module); + }; } /** @@ -29,12 +27,10 @@ public interface PneumaticsBase extends AutoCloseable { * @return module default */ static int getDefaultForType(PneumaticsModuleType type) { - if (type == PneumaticsModuleType.CTREPCM) { - return SensorUtil.getDefaultCTREPCMModule(); - } else if (type == PneumaticsModuleType.REVPH) { - return SensorUtil.getDefaultREVPHModule(); - } - throw new IllegalArgumentException("Unknown module type"); + return switch (type) { + case CTREPCM -> SensorUtil.getDefaultCTREPCMModule(); + case REVPH -> SensorUtil.getDefaultREVPHModule(); + }; } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Relay.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Relay.java index dce3096cc8..b852a35fd5 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Relay.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Relay.java @@ -182,23 +182,23 @@ public class Relay extends MotorSafety implements Sendable, AutoCloseable { */ public void set(Value value) { switch (value) { - case kOff: + case kOff -> { if (m_direction == Direction.kBoth || m_direction == Direction.kForward) { RelayJNI.setRelay(m_forwardHandle, false); } if (m_direction == Direction.kBoth || m_direction == Direction.kReverse) { RelayJNI.setRelay(m_reverseHandle, false); } - break; - case kOn: + } + case kOn -> { if (m_direction == Direction.kBoth || m_direction == Direction.kForward) { RelayJNI.setRelay(m_forwardHandle, true); } if (m_direction == Direction.kBoth || m_direction == Direction.kReverse) { RelayJNI.setRelay(m_reverseHandle, true); } - break; - case kForward: + } + case kForward -> { if (m_direction == Direction.kReverse) { throw new InvalidValueException( "A relay configured for reverse cannot be set to " + "forward"); @@ -209,8 +209,8 @@ public class Relay extends MotorSafety implements Sendable, AutoCloseable { if (m_direction == Direction.kBoth) { RelayJNI.setRelay(m_reverseHandle, false); } - break; - case kReverse: + } + case kReverse -> { if (m_direction == Direction.kForward) { throw new InvalidValueException( "A relay configured for forward cannot be set to " + "reverse"); @@ -221,9 +221,10 @@ public class Relay extends MotorSafety implements Sendable, AutoCloseable { if (m_direction == Direction.kBoth || m_direction == Direction.kReverse) { RelayJNI.setRelay(m_reverseHandle, true); } - break; - default: + } + default -> { // Cannot hit this, limited by Value enum + } } } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java index 3c3035ce13..2de7cf1ce8 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java @@ -91,43 +91,28 @@ public abstract class RobotBase implements AutoCloseable { @Override public void reportUsage(MathUsageId id, int count) { switch (id) { - case kKinematics_DifferentialDrive: - HAL.report( - tResourceType.kResourceType_Kinematics, - tInstances.kKinematics_DifferentialDrive); - break; - case kKinematics_MecanumDrive: - HAL.report( - tResourceType.kResourceType_Kinematics, tInstances.kKinematics_MecanumDrive); - break; - case kKinematics_SwerveDrive: - HAL.report( - tResourceType.kResourceType_Kinematics, tInstances.kKinematics_SwerveDrive); - break; - case kTrajectory_TrapezoidProfile: - HAL.report(tResourceType.kResourceType_TrapezoidProfile, count); - break; - case kFilter_Linear: - HAL.report(tResourceType.kResourceType_LinearFilter, count); - break; - case kOdometry_DifferentialDrive: - HAL.report( - tResourceType.kResourceType_Odometry, tInstances.kOdometry_DifferentialDrive); - break; - case kOdometry_SwerveDrive: - HAL.report(tResourceType.kResourceType_Odometry, tInstances.kOdometry_SwerveDrive); - break; - case kOdometry_MecanumDrive: - HAL.report(tResourceType.kResourceType_Odometry, tInstances.kOdometry_MecanumDrive); - break; - case kController_PIDController2: - HAL.report(tResourceType.kResourceType_PIDController2, count); - break; - case kController_ProfiledPIDController: - HAL.report(tResourceType.kResourceType_ProfiledPIDController, count); - break; - default: - break; + case kKinematics_DifferentialDrive -> HAL.report( + tResourceType.kResourceType_Kinematics, tInstances.kKinematics_DifferentialDrive); + case kKinematics_MecanumDrive -> HAL.report( + tResourceType.kResourceType_Kinematics, tInstances.kKinematics_MecanumDrive); + case kKinematics_SwerveDrive -> HAL.report( + tResourceType.kResourceType_Kinematics, tInstances.kKinematics_SwerveDrive); + case kTrajectory_TrapezoidProfile -> HAL.report( + tResourceType.kResourceType_TrapezoidProfile, count); + case kFilter_Linear -> HAL.report(tResourceType.kResourceType_LinearFilter, count); + case kOdometry_DifferentialDrive -> HAL.report( + tResourceType.kResourceType_Odometry, tInstances.kOdometry_DifferentialDrive); + case kOdometry_SwerveDrive -> HAL.report( + tResourceType.kResourceType_Odometry, tInstances.kOdometry_SwerveDrive); + case kOdometry_MecanumDrive -> HAL.report( + tResourceType.kResourceType_Odometry, tInstances.kOdometry_MecanumDrive); + case kController_PIDController2 -> HAL.report( + tResourceType.kResourceType_PIDController2, count); + case kController_ProfiledPIDController -> HAL.report( + tResourceType.kResourceType_ProfiledPIDController, count); + default -> { + // NOP + } } } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotController.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotController.java index d8faafa6d3..e54d0d7b37 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotController.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotController.java @@ -345,18 +345,13 @@ public final class RobotController { * @return state */ public static RadioLEDState fromValue(int value) { - switch (value) { - case LEDJNI.RADIO_LED_STATE_OFF: - return RadioLEDState.kOff; - case LEDJNI.RADIO_LED_STATE_GREEN: - return RadioLEDState.kGreen; - case LEDJNI.RADIO_LED_STATE_RED: - return RadioLEDState.kRed; - case LEDJNI.RADIO_LED_STATE_ORANGE: - return RadioLEDState.kOrange; - default: - return RadioLEDState.kOff; - } + return switch (value) { + case LEDJNI.RADIO_LED_STATE_OFF -> RadioLEDState.kOff; + case LEDJNI.RADIO_LED_STATE_GREEN -> RadioLEDState.kGreen; + case LEDJNI.RADIO_LED_STATE_RED -> RadioLEDState.kRed; + case LEDJNI.RADIO_LED_STATE_ORANGE -> RadioLEDState.kOrange; + default -> RadioLEDState.kOff; + }; } } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/RuntimeType.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/RuntimeType.java index cad1c51b83..c408cede74 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/RuntimeType.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/RuntimeType.java @@ -29,11 +29,10 @@ public enum RuntimeType { * @return Matching runtime type */ public static RuntimeType getValue(int type) { - if (type == HALUtil.RUNTIME_ROBORIO) { - return RuntimeType.kRoboRIO; - } else if (type == HALUtil.RUNTIME_ROBORIO2) { - return RuntimeType.kRoboRIO2; - } - return RuntimeType.kSimulation; + return switch (type) { + case HALUtil.RUNTIME_ROBORIO -> RuntimeType.kRoboRIO; + case HALUtil.RUNTIME_ROBORIO2 -> RuntimeType.kRoboRIO2; + default -> RuntimeType.kSimulation; + }; } } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/TimedRobot.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/TimedRobot.java index d6b5c32b9d..180a17b457 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/TimedRobot.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/TimedRobot.java @@ -50,10 +50,7 @@ public class TimedRobot extends IterativeRobotBase { @Override public boolean equals(Object rhs) { - if (rhs instanceof Callback) { - return Double.compare(expirationTime, ((Callback) rhs).expirationTime) == 0; - } - return false; + return rhs instanceof Callback callback && expirationTime == callback.expirationTime; } @Override diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Watchdog.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Watchdog.java index e1860e38db..6d00d6402b 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Watchdog.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Watchdog.java @@ -62,10 +62,8 @@ public class Watchdog implements Closeable, Comparable { @Override public boolean equals(Object obj) { - if (obj instanceof Watchdog) { - return Double.compare(m_expirationTimeSeconds, ((Watchdog) obj).m_expirationTimeSeconds) == 0; - } - return false; + return obj instanceof Watchdog watchdog + && Double.compare(m_expirationTimeSeconds, watchdog.m_expirationTimeSeconds) == 0; } @Override diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/ShuffleboardContainer.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/ShuffleboardContainer.java index b19aa2af2d..5e08d4dfd6 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/ShuffleboardContainer.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/ShuffleboardContainer.java @@ -16,7 +16,8 @@ import java.util.function.LongSupplier; import java.util.function.Supplier; /** Common interface for objects that can contain shuffleboard components. */ -public interface ShuffleboardContainer extends ShuffleboardValue { +public sealed interface ShuffleboardContainer extends ShuffleboardValue + permits ShuffleboardLayout, ShuffleboardTab { /** * Gets the components that are direct children of this container. * diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/ShuffleboardInstance.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/ShuffleboardInstance.java index 88e1e495e1..fb8a3b5b76 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/ShuffleboardInstance.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/ShuffleboardInstance.java @@ -103,11 +103,11 @@ final class ShuffleboardInstance implements ShuffleboardRoot { */ private void apply(ShuffleboardContainer container, Consumer func) { for (ShuffleboardComponent component : container.getComponents()) { - if (component instanceof ComplexWidget) { - func.accept((ComplexWidget) component); + if (component instanceof ComplexWidget widget) { + func.accept(widget); } - if (component instanceof ShuffleboardContainer) { - apply((ShuffleboardContainer) component, func); + if (component instanceof ShuffleboardContainer nestedContainer) { + apply(nestedContainer, func); } } } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/ShuffleboardLayout.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/ShuffleboardLayout.java index bb450e4f36..661c06e928 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/ShuffleboardLayout.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/ShuffleboardLayout.java @@ -16,7 +16,7 @@ import java.util.function.LongSupplier; import java.util.function.Supplier; /** A layout in a Shuffleboard tab. Layouts can contain widgets and other layouts. */ -public class ShuffleboardLayout extends ShuffleboardComponent +public final class ShuffleboardLayout extends ShuffleboardComponent implements ShuffleboardContainer { private final ContainerHelper m_helper = new ContainerHelper(this); diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/SimpleWidget.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/SimpleWidget.java index 33405c70c4..df91470659 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/SimpleWidget.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/shuffleboard/SimpleWidget.java @@ -59,8 +59,8 @@ public final class SimpleWidget extends ShuffleboardWidget impleme private void forceGenerate() { ShuffleboardContainer parent = getParent(); - while (parent instanceof ShuffleboardLayout) { - parent = ((ShuffleboardLayout) parent).getParent(); + while (parent instanceof ShuffleboardLayout layout) { + parent = layout.getParent(); } ShuffleboardTab tab = (ShuffleboardTab) parent; tab.getRoot().update(); diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/CallbackStore.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/CallbackStore.java index b9bc746a23..75bae9e767 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/CallbackStore.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/CallbackStore.java @@ -93,21 +93,16 @@ public class CallbackStore implements AutoCloseable { @Override public void close() { switch (m_cancelType) { - case kAlreadyCancelled: + case kAlreadyCancelled -> { // Already cancelled so do nothing so that close() is idempotent. return; - case kNormalCancel: - m_cancelCallback.cancel(m_index, m_uid); - break; - case kChannelCancel: - m_cancelCallbackChannel.cancel(m_index, m_channel, m_uid); - break; - case kNoIndexCancel: - m_cancelCallbackNoIndex.cancel(m_uid); - break; - default: + } + case kNormalCancel -> m_cancelCallback.cancel(m_index, m_uid); + case kChannelCancel -> m_cancelCallbackChannel.cancel(m_index, m_channel, m_uid); + case kNoIndexCancel -> m_cancelCallbackNoIndex.cancel(m_uid); + default -> { assert false; - break; + } } m_cancelType = kAlreadyCancelled; } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DriverStationSim.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DriverStationSim.java index df1c2a2c90..971ce4332f 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DriverStationSim.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DriverStationSim.java @@ -228,24 +228,16 @@ public final class DriverStationSim { * @return the alliance station color and number */ public static AllianceStationID getAllianceStationId() { - switch (DriverStationDataJNI.getAllianceStationId()) { - case DriverStationJNI.kUnknownAllianceStation: - return AllianceStationID.Unknown; - case DriverStationJNI.kRed1AllianceStation: - return AllianceStationID.Red1; - case DriverStationJNI.kRed2AllianceStation: - return AllianceStationID.Red2; - case DriverStationJNI.kRed3AllianceStation: - return AllianceStationID.Red3; - case DriverStationJNI.kBlue1AllianceStation: - return AllianceStationID.Blue1; - case DriverStationJNI.kBlue2AllianceStation: - return AllianceStationID.Blue2; - case DriverStationJNI.kBlue3AllianceStation: - return AllianceStationID.Blue3; - default: - return AllianceStationID.Unknown; - } + return switch (DriverStationDataJNI.getAllianceStationId()) { + case DriverStationJNI.kUnknownAllianceStation -> AllianceStationID.Unknown; + case DriverStationJNI.kRed1AllianceStation -> AllianceStationID.Red1; + case DriverStationJNI.kRed2AllianceStation -> AllianceStationID.Red2; + case DriverStationJNI.kRed3AllianceStation -> AllianceStationID.Red3; + case DriverStationJNI.kBlue1AllianceStation -> AllianceStationID.Blue1; + case DriverStationJNI.kBlue2AllianceStation -> AllianceStationID.Blue2; + case DriverStationJNI.kBlue3AllianceStation -> AllianceStationID.Blue3; + default -> AllianceStationID.Unknown; + }; } /** @@ -254,32 +246,16 @@ public final class DriverStationSim { * @param allianceStationId the new alliance station */ public static void setAllianceStationId(AllianceStationID allianceStationId) { - int allianceStation; - switch (allianceStationId) { - case Unknown: - allianceStation = DriverStationJNI.kUnknownAllianceStation; - break; - case Red1: - allianceStation = DriverStationJNI.kRed1AllianceStation; - break; - case Red2: - allianceStation = DriverStationJNI.kRed2AllianceStation; - break; - case Red3: - allianceStation = DriverStationJNI.kRed3AllianceStation; - break; - case Blue1: - allianceStation = DriverStationJNI.kBlue1AllianceStation; - break; - case Blue2: - allianceStation = DriverStationJNI.kBlue2AllianceStation; - break; - case Blue3: - allianceStation = DriverStationJNI.kBlue3AllianceStation; - break; - default: - return; - } + int allianceStation = + switch (allianceStationId) { + case Unknown -> DriverStationJNI.kUnknownAllianceStation; + case Red1 -> DriverStationJNI.kRed1AllianceStation; + case Red2 -> DriverStationJNI.kRed2AllianceStation; + case Red3 -> DriverStationJNI.kRed3AllianceStation; + case Blue1 -> DriverStationJNI.kBlue1AllianceStation; + case Blue2 -> DriverStationJNI.kBlue2AllianceStation; + case Blue3 -> DriverStationJNI.kBlue3AllianceStation; + }; DriverStationDataJNI.setAllianceStationId(allianceStation); } @@ -507,23 +483,13 @@ public final class DriverStationSim { * @param type the match type */ public static void setMatchType(DriverStation.MatchType type) { - int matchType; - switch (type) { - case Practice: - matchType = 1; - break; - case Qualification: - matchType = 2; - break; - case Elimination: - matchType = 3; - break; - case None: - matchType = 0; - break; - default: - return; - } + int matchType = + switch (type) { + case Practice -> 1; + case Qualification -> 2; + case Elimination -> 3; + case None -> 0; + }; DriverStationDataJNI.setMatchType(matchType); } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/PneumaticsBaseSim.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/PneumaticsBaseSim.java index dde69c1891..cb40d5ab9a 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/PneumaticsBaseSim.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/PneumaticsBaseSim.java @@ -21,14 +21,10 @@ public abstract class PneumaticsBaseSim { * @return the module object. */ public static PneumaticsBaseSim getForType(int module, PneumaticsModuleType type) { - switch (type) { - case CTREPCM: - return new CTREPCMSim(module); - case REVPH: - return new REVPHSim(module); - default: - throw new IllegalArgumentException("Unknown module type"); - } + return switch (type) { + case CTREPCM -> new CTREPCMSim(module); + case REVPH -> new REVPHSim(module); + }; } /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/util/Color.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/util/Color.java index 50605676f7..c7c441daf7 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/util/Color.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/util/Color.java @@ -126,20 +126,14 @@ public class Color { // Goes from 0 to chroma as hue increases final int X = (chroma * remainder) >> 8; - switch (region) { - case 0: - return new Color(v, X + m, m); - case 1: - return new Color(v - X, v, m); - case 2: - return new Color(m, v, X + m); - case 3: - return new Color(m, v - X, v); - case 4: - return new Color(X + m, m, v); - default: - return new Color(v, m, v - X); - } + return switch (region) { + case 0 -> new Color(v, X + m, m); + case 1 -> new Color(v - X, v, m); + case 2 -> new Color(m, v, X + m); + case 3 -> new Color(m, v - X, v); + case 4 -> new Color(X + m, m, v); + default -> new Color(v, m, v - X); + }; } @Override diff --git a/wpilibj/src/test/java/edu/wpi/first/wpilibj/AddressableLEDBufferTest.java b/wpilibj/src/test/java/edu/wpi/first/wpilibj/AddressableLEDBufferTest.java index 6c6c145f1d..267cc293ca 100644 --- a/wpilibj/src/test/java/edu/wpi/first/wpilibj/AddressableLEDBufferTest.java +++ b/wpilibj/src/test/java/edu/wpi/first/wpilibj/AddressableLEDBufferTest.java @@ -103,33 +103,19 @@ class AddressableLEDBufferTest { buffer.forEach( (index, r, g, b) -> { switch (index) { - case 0: - { - assertAll( - () -> assertEquals(1, r, "red at index 0"), - () -> assertEquals(2, g, "green at index 0"), - () -> assertEquals(3, b, "blue at index 0")); - } - break; - case 1: - { - assertAll( - () -> assertEquals(4, r, "red at index 1"), - () -> assertEquals(5, g, "green at index 1"), - () -> assertEquals(6, b, "blue at index 1")); - } - break; - case 2: - { - assertAll( - () -> assertEquals(7, r, "red at index 2"), - () -> assertEquals(8, g, "green at index 2"), - () -> assertEquals(9, b, "blue at index 2")); - } - break; - default: - fail("Unexpected index " + index); - break; + case 0 -> assertAll( + () -> assertEquals(1, r, "red at index 0"), + () -> assertEquals(2, g, "green at index 0"), + () -> assertEquals(3, b, "blue at index 0")); + case 1 -> assertAll( + () -> assertEquals(4, r, "red at index 1"), + () -> assertEquals(5, g, "green at index 1"), + () -> assertEquals(6, b, "blue at index 1")); + case 2 -> assertAll( + () -> assertEquals(7, r, "red at index 2"), + () -> assertEquals(8, g, "green at index 2"), + () -> assertEquals(9, b, "blue at index 2")); + default -> fail("Unexpected index " + index); } }); } diff --git a/wpilibj/src/test/java/edu/wpi/first/wpilibj/simulation/ADIS16448SimTest.java b/wpilibj/src/test/java/edu/wpi/first/wpilibj/simulation/ADIS16448SimTest.java index 419763503a..16da98518a 100644 --- a/wpilibj/src/test/java/edu/wpi/first/wpilibj/simulation/ADIS16448SimTest.java +++ b/wpilibj/src/test/java/edu/wpi/first/wpilibj/simulation/ADIS16448SimTest.java @@ -93,18 +93,10 @@ class ADIS16448SimTest { sim.setGyroAngleZ(4.13); switch (yawAxis) { - case kX: - assertEquals(imu.getAngle(), imu.getGyroAngleX()); - break; - case kY: - assertEquals(imu.getAngle(), imu.getGyroAngleY()); - break; - case kZ: - assertEquals(imu.getAngle(), imu.getGyroAngleZ()); - break; - default: - fail("invalid YawAxis!"); - break; + case kX -> assertEquals(imu.getAngle(), imu.getGyroAngleX()); + case kY -> assertEquals(imu.getAngle(), imu.getGyroAngleY()); + case kZ -> assertEquals(imu.getAngle(), imu.getGyroAngleZ()); + default -> fail("invalid YawAxis!"); } } } @@ -122,18 +114,10 @@ class ADIS16448SimTest { sim.setGyroRateZ(20.71); switch (yawAxis) { - case kX: - assertEquals(imu.getRate(), imu.getGyroRateX()); - break; - case kY: - assertEquals(imu.getRate(), imu.getGyroRateY()); - break; - case kZ: - assertEquals(imu.getRate(), imu.getGyroRateZ()); - break; - default: - fail("invalid YawAxis!"); - break; + case kX -> assertEquals(imu.getRate(), imu.getGyroRateX()); + case kY -> assertEquals(imu.getRate(), imu.getGyroRateY()); + case kZ -> assertEquals(imu.getRate(), imu.getGyroRateZ()); + default -> fail("invalid YawAxis!"); } } } diff --git a/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/fixtures/MotorEncoderFixture.java b/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/fixtures/MotorEncoderFixture.java index d6322913dc..0c831d87a3 100644 --- a/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/fixtures/MotorEncoderFixture.java +++ b/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/fixtures/MotorEncoderFixture.java @@ -156,8 +156,8 @@ public abstract class MotorEncoderFixture implements public void teardown() { if (!m_tornDown) { if (m_motor != null) { - if (m_motor instanceof PWM) { - ((PWM) m_motor).close(); + if (m_motor instanceof PWM motor) { + motor.close(); } m_motor = null; } diff --git a/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/test/AbstractComsSetup.java b/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/test/AbstractComsSetup.java index 4a912931bd..4e8d1d9c6d 100644 --- a/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/test/AbstractComsSetup.java +++ b/wpilibjIntegrationTests/src/main/java/edu/wpi/first/wpilibj/test/AbstractComsSetup.java @@ -106,7 +106,7 @@ public abstract class AbstractComsSetup { protected void failed(Throwable throwable, Description description, String status) { TestBench.out().println(); // Instance of is the best way I know to retrieve this data. - if (throwable instanceof MultipleFailureException) { + if (throwable instanceof MultipleFailureException mfe) { /* * MultipleFailureExceptions hold multiple exceptions in one exception. * In order to properly display these stack traces we have to cast the @@ -114,8 +114,8 @@ public abstract class AbstractComsSetup { * it. */ int exceptionCount = 1; // Running exception count - int failureCount = ((MultipleFailureException) throwable).getFailures().size(); - for (Throwable singleThrown : ((MultipleFailureException) throwable).getFailures()) { + int failureCount = mfe.getFailures().size(); + for (Throwable singleThrown : mfe.getFailures()) { getClassLogger() .logp( Level.SEVERE, diff --git a/wpimath/src/main/java/edu/wpi/first/math/Matrix.java b/wpimath/src/main/java/edu/wpi/first/math/Matrix.java index cd77283649..40f279913f 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/Matrix.java +++ b/wpimath/src/main/java/edu/wpi/first/math/Matrix.java @@ -730,15 +730,9 @@ public class Matrix { if (this == other) { return true; } - if (!(other instanceof Matrix)) { - return false; - } - - Matrix matrix = (Matrix) other; - if (MatrixFeatures_DDRM.hasUncountable(matrix.m_storage.getDDRM())) { - return false; - } - return MatrixFeatures_DDRM.isEquals(this.m_storage.getDDRM(), matrix.m_storage.getDDRM()); + return other instanceof Matrix matrix + && !MatrixFeatures_DDRM.hasUncountable(matrix.m_storage.getDDRM()) + && MatrixFeatures_DDRM.isEquals(this.m_storage.getDDRM(), matrix.m_storage.getDDRM()); } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/Pair.java b/wpimath/src/main/java/edu/wpi/first/math/Pair.java index 86cc5053e9..eacbac4179 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/Pair.java +++ b/wpimath/src/main/java/edu/wpi/first/math/Pair.java @@ -74,11 +74,9 @@ public class Pair { if (obj == this) { return true; } - if (obj instanceof Pair) { - return Objects.equals(m_first, ((Pair) obj).getFirst()) - && Objects.equals(m_second, ((Pair) obj).getSecond()); - } - return false; + return obj instanceof Pair other + && Objects.equals(m_first, other.getFirst()) + && Objects.equals(m_second, other.getSecond()); } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/estimator/PoseEstimator.java b/wpimath/src/main/java/edu/wpi/first/math/estimator/PoseEstimator.java index df0f1ea838..f0d7fe0b18 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/estimator/PoseEstimator.java +++ b/wpimath/src/main/java/edu/wpi/first/math/estimator/PoseEstimator.java @@ -328,11 +328,8 @@ public class PoseEstimator { if (this == obj) { return true; } - if (!(obj instanceof PoseEstimator.InterpolationRecord)) { - return false; - } - var record = (PoseEstimator.InterpolationRecord) obj; - return Objects.equals(gyroAngle, record.gyroAngle) + return obj instanceof PoseEstimator.InterpolationRecord record + && Objects.equals(gyroAngle, record.gyroAngle) && Objects.equals(wheelPositions, record.wheelPositions) && Objects.equals(poseMeters, record.poseMeters); } diff --git a/wpimath/src/main/java/edu/wpi/first/math/filter/Debouncer.java b/wpimath/src/main/java/edu/wpi/first/math/filter/Debouncer.java index c113d9655a..9a281e83f7 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/filter/Debouncer.java +++ b/wpimath/src/main/java/edu/wpi/first/math/filter/Debouncer.java @@ -40,17 +40,11 @@ public class Debouncer { resetTimer(); - switch (m_debounceType) { - case kBoth: // fall-through - case kRising: - m_baseline = false; - break; - case kFalling: - m_baseline = true; - break; - default: - throw new IllegalArgumentException("Invalid debounce type!"); - } + m_baseline = + switch (m_debounceType) { + case kBoth, kRising -> false; + case kFalling -> true; + }; } /** diff --git a/wpimath/src/main/java/edu/wpi/first/math/geometry/Pose2d.java b/wpimath/src/main/java/edu/wpi/first/math/geometry/Pose2d.java index d00490f450..3a72ee79f7 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/geometry/Pose2d.java +++ b/wpimath/src/main/java/edu/wpi/first/math/geometry/Pose2d.java @@ -308,11 +308,9 @@ public class Pose2d implements Interpolatable, ProtobufSerializable, Str */ @Override public boolean equals(Object obj) { - if (obj instanceof Pose2d) { - return ((Pose2d) obj).m_translation.equals(m_translation) - && ((Pose2d) obj).m_rotation.equals(m_rotation); - } - return false; + return obj instanceof Pose2d pose + && m_translation.equals(pose.m_translation) + && m_rotation.equals(pose.m_rotation); } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/geometry/Pose3d.java b/wpimath/src/main/java/edu/wpi/first/math/geometry/Pose3d.java index 9cebf0882d..4bb404ed7f 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/geometry/Pose3d.java +++ b/wpimath/src/main/java/edu/wpi/first/math/geometry/Pose3d.java @@ -303,11 +303,9 @@ public class Pose3d implements Interpolatable, ProtobufSerializable, Str */ @Override public boolean equals(Object obj) { - if (obj instanceof Pose3d) { - return ((Pose3d) obj).m_translation.equals(m_translation) - && ((Pose3d) obj).m_rotation.equals(m_rotation); - } - return false; + return obj instanceof Pose3d pose + && m_translation.equals(pose.m_translation) + && m_rotation.equals(pose.m_rotation); } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/geometry/Quaternion.java b/wpimath/src/main/java/edu/wpi/first/math/geometry/Quaternion.java index 5e1b581e54..47acce270b 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/geometry/Quaternion.java +++ b/wpimath/src/main/java/edu/wpi/first/math/geometry/Quaternion.java @@ -140,13 +140,9 @@ public class Quaternion implements ProtobufSerializable, StructSerializable { */ @Override public boolean equals(Object obj) { - if (obj instanceof Quaternion) { - var other = (Quaternion) obj; - - return Math.abs(dot(other) - norm() * other.norm()) < 1e-9 - && Math.abs(norm() - other.norm()) < 1e-9; - } - return false; + return obj instanceof Quaternion other + && Math.abs(dot(other) - norm() * other.norm()) < 1e-9 + && Math.abs(norm() - other.norm()) < 1e-9; } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/geometry/Rotation2d.java b/wpimath/src/main/java/edu/wpi/first/math/geometry/Rotation2d.java index 126a6df9d3..83366e576e 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/geometry/Rotation2d.java +++ b/wpimath/src/main/java/edu/wpi/first/math/geometry/Rotation2d.java @@ -316,11 +316,8 @@ public class Rotation2d */ @Override public boolean equals(Object obj) { - if (obj instanceof Rotation2d) { - var other = (Rotation2d) obj; - return Math.hypot(m_cos - other.m_cos, m_sin - other.m_sin) < 1E-9; - } - return false; + return obj instanceof Rotation2d other + && Math.hypot(m_cos - other.m_cos, m_sin - other.m_sin) < 1E-9; } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/geometry/Rotation3d.java b/wpimath/src/main/java/edu/wpi/first/math/geometry/Rotation3d.java index 001c648cf0..724c5ed793 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/geometry/Rotation3d.java +++ b/wpimath/src/main/java/edu/wpi/first/math/geometry/Rotation3d.java @@ -422,11 +422,8 @@ public class Rotation3d */ @Override public boolean equals(Object obj) { - if (obj instanceof Rotation3d) { - var other = (Rotation3d) obj; - return Math.abs(Math.abs(m_q.dot(other.m_q)) - m_q.norm() * other.m_q.norm()) < 1e-9; - } - return false; + return obj instanceof Rotation3d other + && Math.abs(Math.abs(m_q.dot(other.m_q)) - m_q.norm() * other.m_q.norm()) < 1e-9; } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/geometry/Transform2d.java b/wpimath/src/main/java/edu/wpi/first/math/geometry/Transform2d.java index 8667f6d6e6..f2bccd8067 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/geometry/Transform2d.java +++ b/wpimath/src/main/java/edu/wpi/first/math/geometry/Transform2d.java @@ -179,11 +179,9 @@ public class Transform2d implements ProtobufSerializable, StructSerializable { */ @Override public boolean equals(Object obj) { - if (obj instanceof Transform2d) { - return ((Transform2d) obj).m_translation.equals(m_translation) - && ((Transform2d) obj).m_rotation.equals(m_rotation); - } - return false; + return obj instanceof Transform2d other + && other.m_translation.equals(m_translation) + && other.m_rotation.equals(m_rotation); } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/geometry/Transform3d.java b/wpimath/src/main/java/edu/wpi/first/math/geometry/Transform3d.java index 2f986ff29d..e7254da92c 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/geometry/Transform3d.java +++ b/wpimath/src/main/java/edu/wpi/first/math/geometry/Transform3d.java @@ -173,11 +173,9 @@ public class Transform3d implements ProtobufSerializable, StructSerializable { */ @Override public boolean equals(Object obj) { - if (obj instanceof Transform3d) { - return ((Transform3d) obj).m_translation.equals(m_translation) - && ((Transform3d) obj).m_rotation.equals(m_rotation); - } - return false; + return obj instanceof Transform3d other + && other.m_translation.equals(m_translation) + && other.m_rotation.equals(m_rotation); } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/geometry/Translation2d.java b/wpimath/src/main/java/edu/wpi/first/math/geometry/Translation2d.java index 9899b97ef4..698421d3b4 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/geometry/Translation2d.java +++ b/wpimath/src/main/java/edu/wpi/first/math/geometry/Translation2d.java @@ -278,11 +278,9 @@ public class Translation2d */ @Override public boolean equals(Object obj) { - if (obj instanceof Translation2d) { - return Math.abs(((Translation2d) obj).m_x - m_x) < 1E-9 - && Math.abs(((Translation2d) obj).m_y - m_y) < 1E-9; - } - return false; + return obj instanceof Translation2d other + && Math.abs(other.m_x - m_x) < 1E-9 + && Math.abs(other.m_y - m_y) < 1E-9; } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/geometry/Translation3d.java b/wpimath/src/main/java/edu/wpi/first/math/geometry/Translation3d.java index ba8c699dc4..3d31784b8b 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/geometry/Translation3d.java +++ b/wpimath/src/main/java/edu/wpi/first/math/geometry/Translation3d.java @@ -261,12 +261,10 @@ public class Translation3d */ @Override public boolean equals(Object obj) { - if (obj instanceof Translation3d) { - return Math.abs(((Translation3d) obj).m_x - m_x) < 1E-9 - && Math.abs(((Translation3d) obj).m_y - m_y) < 1E-9 - && Math.abs(((Translation3d) obj).m_z - m_z) < 1E-9; - } - return false; + return obj instanceof Translation3d other + && Math.abs(other.m_x - m_x) < 1E-9 + && Math.abs(other.m_y - m_y) < 1E-9 + && Math.abs(other.m_z - m_z) < 1E-9; } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/geometry/Twist2d.java b/wpimath/src/main/java/edu/wpi/first/math/geometry/Twist2d.java index 53ab6ba9c2..0867d05062 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/geometry/Twist2d.java +++ b/wpimath/src/main/java/edu/wpi/first/math/geometry/Twist2d.java @@ -55,12 +55,10 @@ public class Twist2d implements ProtobufSerializable, StructSerializable { */ @Override public boolean equals(Object obj) { - if (obj instanceof Twist2d) { - return Math.abs(((Twist2d) obj).dx - dx) < 1E-9 - && Math.abs(((Twist2d) obj).dy - dy) < 1E-9 - && Math.abs(((Twist2d) obj).dtheta - dtheta) < 1E-9; - } - return false; + return obj instanceof Twist2d other + && Math.abs(other.dx - dx) < 1E-9 + && Math.abs(other.dy - dy) < 1E-9 + && Math.abs(other.dtheta - dtheta) < 1E-9; } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/geometry/Twist3d.java b/wpimath/src/main/java/edu/wpi/first/math/geometry/Twist3d.java index 80786029ef..a03a035adf 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/geometry/Twist3d.java +++ b/wpimath/src/main/java/edu/wpi/first/math/geometry/Twist3d.java @@ -72,15 +72,13 @@ public class Twist3d implements ProtobufSerializable, StructSerializable { */ @Override public boolean equals(Object obj) { - if (obj instanceof Twist3d) { - return Math.abs(((Twist3d) obj).dx - dx) < 1E-9 - && Math.abs(((Twist3d) obj).dy - dy) < 1E-9 - && Math.abs(((Twist3d) obj).dz - dz) < 1E-9 - && Math.abs(((Twist3d) obj).rx - rx) < 1E-9 - && Math.abs(((Twist3d) obj).ry - ry) < 1E-9 - && Math.abs(((Twist3d) obj).rz - rz) < 1E-9; - } - return false; + return obj instanceof Twist3d other + && Math.abs(other.dx - dx) < 1E-9 + && Math.abs(other.dy - dy) < 1E-9 + && Math.abs(other.dz - dz) < 1E-9 + && Math.abs(other.rx - rx) < 1E-9 + && Math.abs(other.ry - ry) < 1E-9 + && Math.abs(other.rz - rz) < 1E-9; } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/kinematics/ChassisSpeeds.java b/wpimath/src/main/java/edu/wpi/first/math/kinematics/ChassisSpeeds.java index 390c037bbb..e223d7ebe3 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/kinematics/ChassisSpeeds.java +++ b/wpimath/src/main/java/edu/wpi/first/math/kinematics/ChassisSpeeds.java @@ -394,14 +394,8 @@ public class ChassisSpeeds implements ProtobufSerializable, StructSerializable { if (o == this) { return true; } - - if (!(o instanceof ChassisSpeeds)) { - return false; - } - - ChassisSpeeds c = (ChassisSpeeds) o; - - return vxMetersPerSecond == c.vxMetersPerSecond + return o instanceof ChassisSpeeds c + && vxMetersPerSecond == c.vxMetersPerSecond && vyMetersPerSecond == c.vyMetersPerSecond && omegaRadiansPerSecond == c.omegaRadiansPerSecond; } diff --git a/wpimath/src/main/java/edu/wpi/first/math/kinematics/DifferentialDriveWheelPositions.java b/wpimath/src/main/java/edu/wpi/first/math/kinematics/DifferentialDriveWheelPositions.java index d6036b8747..ef4e5b0e92 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/kinematics/DifferentialDriveWheelPositions.java +++ b/wpimath/src/main/java/edu/wpi/first/math/kinematics/DifferentialDriveWheelPositions.java @@ -53,12 +53,9 @@ public class DifferentialDriveWheelPositions @Override public boolean equals(Object obj) { - if (obj instanceof DifferentialDriveWheelPositions) { - DifferentialDriveWheelPositions other = (DifferentialDriveWheelPositions) obj; - return Math.abs(other.leftMeters - leftMeters) < 1E-9 - && Math.abs(other.rightMeters - rightMeters) < 1E-9; - } - return false; + return obj instanceof DifferentialDriveWheelPositions other + && Math.abs(other.leftMeters - leftMeters) < 1E-9 + && Math.abs(other.rightMeters - rightMeters) < 1E-9; } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/kinematics/MecanumDriveWheelPositions.java b/wpimath/src/main/java/edu/wpi/first/math/kinematics/MecanumDriveWheelPositions.java index 179e1bf14b..e193dbdc4b 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/kinematics/MecanumDriveWheelPositions.java +++ b/wpimath/src/main/java/edu/wpi/first/math/kinematics/MecanumDriveWheelPositions.java @@ -79,14 +79,11 @@ public class MecanumDriveWheelPositions @Override public boolean equals(Object obj) { - if (obj instanceof MecanumDriveWheelPositions) { - MecanumDriveWheelPositions other = (MecanumDriveWheelPositions) obj; - return Math.abs(other.frontLeftMeters - frontLeftMeters) < 1E-9 - && Math.abs(other.frontRightMeters - frontRightMeters) < 1E-9 - && Math.abs(other.rearLeftMeters - rearLeftMeters) < 1E-9 - && Math.abs(other.rearRightMeters - rearRightMeters) < 1E-9; - } - return false; + return obj instanceof MecanumDriveWheelPositions other + && Math.abs(other.frontLeftMeters - frontLeftMeters) < 1E-9 + && Math.abs(other.frontRightMeters - frontRightMeters) < 1E-9 + && Math.abs(other.rearLeftMeters - rearLeftMeters) < 1E-9 + && Math.abs(other.rearRightMeters - rearRightMeters) < 1E-9; } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/kinematics/SwerveModulePosition.java b/wpimath/src/main/java/edu/wpi/first/math/kinematics/SwerveModulePosition.java index ec430331e9..7923a0312b 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/kinematics/SwerveModulePosition.java +++ b/wpimath/src/main/java/edu/wpi/first/math/kinematics/SwerveModulePosition.java @@ -61,11 +61,9 @@ public class SwerveModulePosition @Override public boolean equals(Object obj) { - if (obj instanceof SwerveModulePosition) { - SwerveModulePosition other = (SwerveModulePosition) obj; - return Math.abs(other.distanceMeters - distanceMeters) < 1E-9 && angle.equals(other.angle); - } - return false; + return obj instanceof SwerveModulePosition other + && Math.abs(other.distanceMeters - distanceMeters) < 1E-9 + && angle.equals(other.angle); } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/kinematics/SwerveModuleState.java b/wpimath/src/main/java/edu/wpi/first/math/kinematics/SwerveModuleState.java index a5db397260..70d52da96d 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/kinematics/SwerveModuleState.java +++ b/wpimath/src/main/java/edu/wpi/first/math/kinematics/SwerveModuleState.java @@ -57,12 +57,9 @@ public class SwerveModuleState @Override public boolean equals(Object obj) { - if (obj instanceof SwerveModuleState) { - SwerveModuleState other = (SwerveModuleState) obj; - return Math.abs(other.speedMetersPerSecond - speedMetersPerSecond) < 1E-9 - && angle.equals(other.angle); - } - return false; + return obj instanceof SwerveModuleState other + && Math.abs(other.speedMetersPerSecond - speedMetersPerSecond) < 1E-9 + && angle.equals(other.angle); } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java b/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java index 76b7d6e764..fd2cef3d25 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java +++ b/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java @@ -151,12 +151,9 @@ public class ExponentialProfile { @Override public boolean equals(Object other) { - if (other instanceof State) { - State rhs = (State) other; - return this.position == rhs.position && this.velocity == rhs.velocity; - } else { - return false; - } + return other instanceof State rhs + && this.position == rhs.position + && this.velocity == rhs.velocity; } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/trajectory/Trajectory.java b/wpimath/src/main/java/edu/wpi/first/math/trajectory/Trajectory.java index cdcac9ef48..1222d885b8 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/trajectory/Trajectory.java +++ b/wpimath/src/main/java/edu/wpi/first/math/trajectory/Trajectory.java @@ -383,14 +383,8 @@ public class Trajectory implements ProtobufSerializable { @Override public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof State)) { - return false; - } - State state = (State) obj; - return Double.compare(state.timeSeconds, timeSeconds) == 0 + return obj instanceof State state + && Double.compare(state.timeSeconds, timeSeconds) == 0 && Double.compare(state.velocityMetersPerSecond, velocityMetersPerSecond) == 0 && Double.compare(state.accelerationMetersPerSecondSq, accelerationMetersPerSecondSq) == 0 && Double.compare(state.curvatureRadPerMeter, curvatureRadPerMeter) == 0 @@ -421,6 +415,6 @@ public class Trajectory implements ProtobufSerializable { @Override public boolean equals(Object obj) { - return obj instanceof Trajectory && m_states.equals(((Trajectory) obj).getStates()); + return obj instanceof Trajectory other && m_states.equals(other.getStates()); } } diff --git a/wpimath/src/main/java/edu/wpi/first/math/trajectory/TrapezoidProfile.java b/wpimath/src/main/java/edu/wpi/first/math/trajectory/TrapezoidProfile.java index 7d785a2d40..355981ed2b 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/trajectory/TrapezoidProfile.java +++ b/wpimath/src/main/java/edu/wpi/first/math/trajectory/TrapezoidProfile.java @@ -120,12 +120,9 @@ public class TrapezoidProfile { @Override public boolean equals(Object other) { - if (other instanceof State) { - State rhs = (State) other; - return this.position == rhs.position && this.velocity == rhs.velocity; - } else { - return false; - } + return other instanceof State rhs + && this.position == rhs.position + && this.velocity == rhs.velocity; } @Override diff --git a/wpiunits/src/main/java/edu/wpi/first/units/ImmutableMeasure.java b/wpiunits/src/main/java/edu/wpi/first/units/ImmutableMeasure.java index cc7f09f548..60e92e5715 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/ImmutableMeasure.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/ImmutableMeasure.java @@ -83,14 +83,9 @@ public class ImmutableMeasure> implements Measure { */ @Override public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof Measure)) { - return false; - } - Measure that = (Measure) o; - return Objects.equals(m_unit, that.unit()) && m_baseUnitMagnitude == that.baseUnitMagnitude(); + return o instanceof Measure that + && Objects.equals(m_unit, that.unit()) + && m_baseUnitMagnitude == that.baseUnitMagnitude(); } @Override diff --git a/wpiunits/src/main/java/edu/wpi/first/units/Measure.java b/wpiunits/src/main/java/edu/wpi/first/units/Measure.java index 9ae27846a9..b545e55bed 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/Measure.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/Measure.java @@ -85,36 +85,29 @@ public interface Measure> extends Comparable> { * @param other the unit to multiply by * @return the multiplicative unit */ - @SuppressWarnings("unchecked") default > Measure times(Measure other) { if (other.unit() instanceof Dimensionless) { // scalar multiplication return times(other.baseUnitMagnitude()); } - if (unit() instanceof Per - && other.unit().getBaseUnit().equals(((Per) unit()).denominator().getBaseUnit())) { + if (unit() instanceof Per per + && other.unit().getBaseUnit().equals(per.denominator().getBaseUnit())) { // denominator of the Per cancels out, return with just the units of the numerator - Unit numerator = ((Per) unit()).numerator(); + Unit numerator = per.numerator(); return numerator.ofBaseUnits(baseUnitMagnitude() * other.baseUnitMagnitude()); - } else if (unit() instanceof Velocity && other.unit().getBaseUnit().equals(Seconds)) { + } else if (unit() instanceof Velocity v && other.unit().getBaseUnit().equals(Seconds)) { // Multiplying a velocity by a time, return the scalar unit (eg Distance) - Unit numerator = ((Velocity) unit()).getUnit(); + Unit numerator = v.getUnit(); return numerator.ofBaseUnits(baseUnitMagnitude() * other.baseUnitMagnitude()); - } else if (other.unit() instanceof Per - && unit().getBaseUnit().equals(((Per) other.unit()).denominator().getBaseUnit())) { - Unit numerator = ((Per) other.unit()).numerator(); + } else if (other.unit() instanceof Per per + && unit().getBaseUnit().equals(per.denominator().getBaseUnit())) { + Unit numerator = per.numerator(); return numerator.ofBaseUnits(baseUnitMagnitude() * other.baseUnitMagnitude()); - } else if (unit() instanceof Per - && other.unit() instanceof Per - && ((Per) unit()) - .denominator() - .getBaseUnit() - .equals(((Per) other.unit()).numerator().getBaseUnit()) - && ((Per) unit()) - .numerator() - .getBaseUnit() - .equals(((Per) other.unit()).denominator().getBaseUnit())) { + } else if (unit() instanceof Per per + && other.unit() instanceof Per otherPer + && per.denominator().getBaseUnit().equals(otherPer.numerator().getBaseUnit()) + && per.numerator().getBaseUnit().equals(otherPer.denominator().getBaseUnit())) { // multiplying eg meters per second * milliseconds per foot // return a scalar return Units.Value.of(baseUnitMagnitude() * other.baseUnitMagnitude()); diff --git a/wpiunits/src/main/java/edu/wpi/first/units/MutableMeasure.java b/wpiunits/src/main/java/edu/wpi/first/units/MutableMeasure.java index 25ca5ab7e3..f62433f174 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/MutableMeasure.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/MutableMeasure.java @@ -286,14 +286,9 @@ public final class MutableMeasure> implements Measure { @Override public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof Measure)) { - return false; - } - Measure that = (Measure) o; - return Objects.equals(m_unit, that.unit()) && this.isEquivalent(that); + return o instanceof Measure that + && Objects.equals(m_unit, that.unit()) + && this.isEquivalent(that); } @Override diff --git a/wpiunits/src/main/java/edu/wpi/first/units/Unit.java b/wpiunits/src/main/java/edu/wpi/first/units/Unit.java index fba70a8915..8c61543fb2 100644 --- a/wpiunits/src/main/java/edu/wpi/first/units/Unit.java +++ b/wpiunits/src/main/java/edu/wpi/first/units/Unit.java @@ -289,11 +289,10 @@ public class Unit> { if (this == o) { return true; } - if (!(o instanceof Unit)) { - return false; - } - Unit that = (Unit) o; - return m_name.equals(that.m_name) && m_symbol.equals(that.m_symbol) && this.equivalent(that); + return o instanceof Unit that + && m_name.equals(that.m_name) + && m_symbol.equals(that.m_symbol) + && this.equivalent(that); } @Override diff --git a/wpiutil/src/main/java/edu/wpi/first/util/struct/DynamicStruct.java b/wpiutil/src/main/java/edu/wpi/first/util/struct/DynamicStruct.java index de8350e8d2..4ab2686960 100644 --- a/wpiutil/src/main/java/edu/wpi/first/util/struct/DynamicStruct.java +++ b/wpiutil/src/main/java/edu/wpi/first/util/struct/DynamicStruct.java @@ -579,23 +579,14 @@ public final class DynamicStruct { "arrIndex (" + arrIndex + ") is larger than array size (" + field.m_arraySize + ")"); } - long val; - switch (field.m_size) { - case 1: - val = m_data.get(field.m_offset + arrIndex); - break; - case 2: - val = m_data.getShort(field.m_offset + arrIndex * 2); - break; - case 4: - val = m_data.getInt(field.m_offset + arrIndex * 4); - break; - case 8: - val = m_data.getLong(field.m_offset + arrIndex * 8); - break; - default: - throw new IllegalStateException("invalid field size"); - } + long val = + switch (field.m_size) { + case 1 -> m_data.get(field.m_offset + arrIndex); + case 2 -> m_data.getShort(field.m_offset + arrIndex * 2); + case 4 -> m_data.getInt(field.m_offset + arrIndex * 4); + case 8 -> m_data.getLong(field.m_offset + arrIndex * 8); + default -> throw new IllegalStateException("invalid field size"); + }; if (field.isUint() || field.getType() == StructFieldType.kBool) { // for unsigned fields, we can simply logical shift and mask @@ -623,60 +614,42 @@ public final class DynamicStruct { // common case is no bit shift and no masking if (!field.isBitField()) { switch (field.m_size) { - case 1: - m_data.put(field.m_offset + arrIndex, (byte) value); - break; - case 2: - m_data.putShort(field.m_offset + arrIndex * 2, (short) value); - break; - case 4: - m_data.putInt(field.m_offset + arrIndex * 4, (int) value); - break; - case 8: - m_data.putLong(field.m_offset + arrIndex * 8, value); - break; - default: - throw new IllegalStateException("invalid field size"); + case 1 -> m_data.put(field.m_offset + arrIndex, (byte) value); + case 2 -> m_data.putShort(field.m_offset + arrIndex * 2, (short) value); + case 4 -> m_data.putInt(field.m_offset + arrIndex * 4, (int) value); + case 8 -> m_data.putLong(field.m_offset + arrIndex * 8, value); + default -> throw new IllegalStateException("invalid field size"); } return; } // handle bit shifting and masking into current value switch (field.m_size) { - case 1: - { - byte val = m_data.get(field.m_offset + arrIndex); - val &= (byte) ~(field.getBitMask() << field.m_bitShift); - val |= (byte) ((value & field.getBitMask()) << field.m_bitShift); - m_data.put(field.m_offset + arrIndex, val); - break; - } - case 2: - { - short val = m_data.getShort(field.m_offset + arrIndex * 2); - val &= (short) ~(field.getBitMask() << field.m_bitShift); - val |= (short) ((value & field.getBitMask()) << field.m_bitShift); - m_data.putShort(field.m_offset + arrIndex * 2, val); - break; - } - case 4: - { - int val = m_data.getInt(field.m_offset + arrIndex * 4); - val &= (int) ~(field.getBitMask() << field.m_bitShift); - val |= (int) ((value & field.getBitMask()) << field.m_bitShift); - m_data.putInt(field.m_offset + arrIndex * 4, val); - break; - } - case 8: - { - long val = m_data.getLong(field.m_offset + arrIndex * 8); - val &= ~(field.getBitMask() << field.m_bitShift); - val |= (value & field.getBitMask()) << field.m_bitShift; - m_data.putLong(field.m_offset + arrIndex * 8, val); - break; - } - default: - throw new IllegalStateException("invalid field size"); + case 1 -> { + byte val = m_data.get(field.m_offset + arrIndex); + val &= (byte) ~(field.getBitMask() << field.m_bitShift); + val |= (byte) ((value & field.getBitMask()) << field.m_bitShift); + m_data.put(field.m_offset + arrIndex, val); + } + case 2 -> { + short val = m_data.getShort(field.m_offset + arrIndex * 2); + val &= (short) ~(field.getBitMask() << field.m_bitShift); + val |= (short) ((value & field.getBitMask()) << field.m_bitShift); + m_data.putShort(field.m_offset + arrIndex * 2, val); + } + case 4 -> { + int val = m_data.getInt(field.m_offset + arrIndex * 4); + val &= (int) ~(field.getBitMask() << field.m_bitShift); + val |= (int) ((value & field.getBitMask()) << field.m_bitShift); + m_data.putInt(field.m_offset + arrIndex * 4, val); + } + case 8 -> { + long val = m_data.getLong(field.m_offset + arrIndex * 8); + val &= ~(field.getBitMask() << field.m_bitShift); + val |= (value & field.getBitMask()) << field.m_bitShift; + m_data.putLong(field.m_offset + arrIndex * 8, val); + } + default -> throw new IllegalStateException("invalid field size"); } } diff --git a/wpiutil/src/main/java/edu/wpi/first/util/struct/parser/Lexer.java b/wpiutil/src/main/java/edu/wpi/first/util/struct/parser/Lexer.java index 6e3cd5dac7..34c49bb8a7 100644 --- a/wpiutil/src/main/java/edu/wpi/first/util/struct/parser/Lexer.java +++ b/wpiutil/src/main/java/edu/wpi/first/util/struct/parser/Lexer.java @@ -27,43 +27,24 @@ public class Lexer { } while (m_current == ' ' || m_current == '\t' || m_current == '\n' || m_current == '\r'); m_tokenStart = m_pos - 1; - switch (m_current) { - case '[': - return TokenKind.kLeftBracket; - case ']': - return TokenKind.kRightBracket; - case '{': - return TokenKind.kLeftBrace; - case '}': - return TokenKind.kRightBrace; - case ':': - return TokenKind.kColon; - case ';': - return TokenKind.kSemicolon; - case ',': - return TokenKind.kComma; - case '=': - return TokenKind.kEquals; - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - return scanInteger(); - case '\0': - return TokenKind.kEndOfInput; - default: + return switch (m_current) { + case '[' -> TokenKind.kLeftBracket; + case ']' -> TokenKind.kRightBracket; + case '{' -> TokenKind.kLeftBrace; + case '}' -> TokenKind.kRightBrace; + case ':' -> TokenKind.kColon; + case ';' -> TokenKind.kSemicolon; + case ',' -> TokenKind.kComma; + case '=' -> TokenKind.kEquals; + case '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' -> scanInteger(); + case '\0' -> TokenKind.kEndOfInput; + default -> { if (Character.isLetter(m_current) || m_current == '_') { - return scanIdentifier(); + yield scanIdentifier(); } - return TokenKind.kUnknown; - } + yield TokenKind.kUnknown; + } + }; } /** diff --git a/wpiutil/src/printlog/java/printlog/PrintLog.java b/wpiutil/src/printlog/java/printlog/PrintLog.java index b3d972b47a..c0074df0b7 100644 --- a/wpiutil/src/printlog/java/printlog/PrintLog.java +++ b/wpiutil/src/printlog/java/printlog/PrintLog.java @@ -124,20 +124,17 @@ public final class PrintLog { continue; } - if ("double".equals(entry.type)) { - System.out.println(" " + record.getDouble()); - } else if ("int64".equals(entry.type)) { - System.out.println(" " + record.getInteger()); - } else if ("string".equals(entry.type) || "json".equals(entry.type)) { - System.out.println(" '" + record.getString() + "'"); - } else if ("boolean".equals(entry.type)) { - System.out.println(" " + record.getBoolean()); - } else if ("double[]".equals(entry.type)) { - System.out.println(" " + List.of(record.getDoubleArray())); - } else if ("int64[]".equals(entry.type)) { - System.out.println(" " + List.of(record.getIntegerArray())); - } else if ("string[]".equals(entry.type)) { - System.out.println(" " + List.of(record.getStringArray())); + switch (entry.type) { + case "double" -> System.out.println(" " + record.getDouble()); + case "int64" -> System.out.println(" " + record.getInteger()); + case "string", "json" -> System.out.println(" '" + record.getString() + "'"); + case "boolean" -> System.out.println(" " + record.getBoolean()); + case "double[]" -> System.out.println(" " + List.of(record.getDoubleArray())); + case "int64[]" -> System.out.println(" " + List.of(record.getIntegerArray())); + case "string[]" -> System.out.println(" " + List.of(record.getStringArray())); + default -> { + // NOP + } } } catch (InputMismatchException ex) { System.out.println(" invalid");