Use pattern matching on instanceof in yang-common
[yangtools.git] / common / yang-common / src / main / java / org / opendaylight / yangtools / yang / common / QName.java
index 2c19fa9f0295263ad9a6f85f7eed1a7c7ce47e80..d836d9287d8ad86d814deafe13e0de13e44d9aef 100644 (file)
@@ -223,8 +223,8 @@ public final class QName extends AbstractQName implements Comparable<QName> {
      * @throws IOException if I/O error occurs
      */
     public static @NonNull QName readFrom(final DataInput in) throws IOException {
-        if (in instanceof QNameAwareDataInput) {
-            return ((QNameAwareDataInput) in).readQName();
+        if (in instanceof QNameAwareDataInput aware) {
+            return aware.readQName();
         }
 
         final QNameModule module = QNameModule.readFrom(in);
@@ -306,14 +306,8 @@ public final class QName extends AbstractQName implements Comparable<QName> {
      */
     @Override
     public boolean equals(final Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (!(obj instanceof QName)) {
-            return false;
-        }
-        final QName other = (QName) obj;
-        return Objects.equals(getLocalName(), other.getLocalName()) && module.equals(other.module);
+        return this == obj || obj instanceof QName other && getLocalName().equals(other.getLocalName())
+            && module.equals(other.module);
     }
 
     @Override
@@ -371,23 +365,17 @@ public final class QName extends AbstractQName implements Comparable<QName> {
         return getLocalName().equals(other.getLocalName()) && Objects.equals(getNamespace(), other.getNamespace());
     }
 
-    // FIXME: this comparison function looks odd. We are sorting first by local name and then by module? What is
-    //        the impact on iteration order of SortedMap<QName, ?>?
     @Override
     @SuppressWarnings("checkstyle:parameterName")
     public int compareTo(final QName o) {
-        // compare mandatory localName parameter
-        int result = getLocalName().compareTo(o.getLocalName());
-        if (result != 0) {
-            return result;
-        }
-        return module.compareTo(o.module);
+        final int result = module.compareTo(o.module);
+        return result != 0 ? result : getLocalName().compareTo(o.getLocalName());
     }
 
     @Override
     public void writeTo(final DataOutput out) throws IOException {
-        if (out instanceof QNameAwareDataOutput) {
-            ((QNameAwareDataOutput) out).writeQName(this);
+        if (out instanceof QNameAwareDataOutput aware) {
+            aware.writeQName(this);
         } else {
             module.writeTo(out);
             out.writeUTF(getLocalName());