2017-12-05 2 views
-1

Schreiben eines abstrakten Klassenprojekts. Die abstrakte Klasse ist die übergeordnete Klasse und enthält eine equals-Methode. Ein Teil meines Projekts besteht darin, eine boolesche equals-Methode zu erstellen, die die Client-IDs (long) von 3 Unterklassen vergleicht, um sicherzustellen, dass es sich nicht um Duplikats-IDs handelt. Ein Problem bei der Implementierung des Codes. Im Folgenden finden Sie, was ich bisher habenBoolesche Gleichungsmethode

public static boolean equals(Object A, Object B, Object C) { 
    if(A.equals(B) || A.equals(C) || B.equals(C)) 
     return true; 
    else 
     return false; 
} 

Benötigen Sie Hilfe bei der 3 Klassenwerte für die Client-ID in den Code löschen und dann den Code in eine Methode toString() enthält.

+1

Bitte machen es für uns verständlich. – meditat

+0

importieren Sie java.util.Scanner; öffentlicher Klassentest { public static void main (Zeichenfolge [] args) { \t Scanner s = neuer Scanner (System.in); long [] Array = neu lang [3]; für (int i = 0; i user9057517

+0

public static boolesch gleich (Objekt a, long [] b) { if (a == null) { return (b == null); } if (b == null) { Rückgabe false; } if ((lang) a! = B.length) { Rückgabe false; } für (int i = 0; i user9057517

Antwort

1

Sie können Ihre Methode den folgenden ändern:

public static boolean equals(Object A, Object B, Object C) { 
    return A != null && B != null && C != null && (A.equals(B) || A.equals(C) || B.equals(C)); 
} 

Nur wenige Dinge:

  1. Jeder Ort, Sie haben:

    if (cond) { 
        return true; 
    } else { 
        return false; 
    } 
    

    können Sie nur die cond zurück: return cond;

  2. Hinzugefügt Nicht-null-Validierung: A != null && B != null && C != null
  3. Sie sollten equals() Methode für jede Klasse (A, B und C) und beinhalten das Feld/s Sie in equals (nur ID in Ihrem Beispiel)
verwenden möchten außer Kraft setzen
1

ich nicht bekommen, was Sie wollen, aber ich werde einen Schuss nehmen:

static class Client { 
    private long id; 

    @Override 
    public boolean equals(Object obj) { 
     if (this == obj) return true; 
     if (getClass() != obj.getClass()) return false; 
     Client oth = (Client) obj; 
     return oth.id == this.id; 
    } 

    Client(long id) { 
     this.id = id; 
    } 
} 

public static boolean equals(Object A, Object B, Object C) { 
    return A.equals(B) || A.equals(C) || B.equals(C); 
} 

public static void main(String[] args) { 
    Object c1 = new Client(4); 
    Object c2 = new Client(3); 
    Object c3 = new Client(2); 

    equals(c1, c2, c3); 
} 
+0

Wären Sie in der Lage, diesen Code über 3 untergeordnete Klassen zu implementieren, um sich gegenseitig zu referenzieren. Sie alle haben die gleiche Elternklasse.Müsste ich die Nummer in einem Array speichern? – user9057517

+0

@ user9057517, können Sie genauer und beschreiben klarer? Über welche Nummer redest du? ICH WÜRDE? – GrastaSsS

+0

Zum Beispiel Elternklasse hat private lange clientid – user9057517