Heim >Java >javaLernprogramm >Den Umfang von Mustervariablen in Java verstehen

Den Umfang von Mustervariablen in Java verstehen

王林
王林Original
2024-09-04 00:00:021121Durchsuche

Understanding the Scope of Pattern Variables in Java

Bereich bezieht sich auf den Bereich oder die Grenzen, innerhalb derer auf eine bestimmte Variable oder einen bestimmten Code zugegriffen und diese verwendet werden kann. In der Programmierung werden Mustervariablen verwendet, um eine bestimmte Datenstruktur abzugleichen, und ihr Umfang kann auf bestimmte Bedingungen oder Anweisungen beschränkt werden.

Angenommen, wir haben ein Szenario, in dem ein Benutzer entweder ein Administrator oder ein normaler Benutzer sein kann. Mit dem Operator „instanceof“ können wir den Typ des Benutzers überprüfen und dann basierend auf seiner Rolle auf seine spezifischen Eigenschaften zugreifen. In diesem Beispiel wäre der Geltungsbereich der Mustervariablen auf die spezifische Rolle des Benutzers beschränkt:

if (user instanceof Administrator admin) {
    // Here we can access the properties and methods of the admin user.
    admin.addNewUser();
} else if (user instanceof RegularUser regUser) {
    // Here we can only access the properties and methods of a regular user.
    regUser.editProfile();
}

Im obigen Code ist der Gültigkeitsbereich der Mustervariablen admin auf die if-Anweisung beschränkt, bei der die Instanzbedingung wahr ist. Das bedeutet, dass wir nur innerhalb dieser Anweisung auf die Eigenschaften und Methoden des Admin-Benutzers zugreifen können.

Ebenso kann der Geltungsbereich einer Mustervariablen über die Anweisung hinausgehen, in der sie eingeführt wurde. Nehmen wir an, wir haben eine Funktion, die prüft, ob eine bestimmte Form ein Rechteck ist und ob sie groß genug ist. In diesem Fall würde der Gültigkeitsbereich der Mustervariablen r über die if-Anweisung hinausgehen, in der sie eingeführt wurde:

public static boolean bigEnoughRect(Shape s) {
    if (!(s instanceof Rectangle r)) {
        // Here the pattern variable 'r' cannot be used as the instance of Rectangle is false.
        return false;
    }
    // However, we can access the properties and methods of the rectangle 'r' here.
    return r.length() > 5; 
}

Mustervariablen können auch in den Ausdrücken von if-Anweisungen verwendet werden. Dadurch können wir nur dann auf die Mustervariable zugreifen, wenn die bedingte Anweisung wahr ist. Im folgenden Beispiel verwenden wir die Mustervariable r, um mithilfe des bedingten UND-Operators zu prüfen, ob die Länge eines Rechtecks ​​größer als 5 ist:

if (shape instanceof Rectangle r && r.length() > 5) {
    // Here we can use the pattern variable 'r' to access the properties of a rectangle only if the instance of Rectangle is true.
    System.out.println("This rectangle is big enough!");
}

Wir können den Operator „instanceof“ jedoch nicht in einer bedingten Anweisung zum Mustervergleich verwenden, da er nach einem anderen Bereichstyp sucht. Im folgenden Beispiel gibt das Programm einen Fehler aus, da auf den Bereich der Mustervariablen r nicht zugegriffen werden kann, wenn die Instanz von „Rechteck“ falsch ist:

if (shape instanceof Rectangle r || r.length() > 0) { // error
    // Here we cannot use the pattern variable 'r' as it may or may not exist depending on the instance of Rectangle.
    System.out.println("This is a rectangle with a length greater than 0");
}

Zusammenfassend lässt sich sagen, dass der Umfang einer Mustervariablen entscheidend dafür ist, wo wir in unserem Code auf sie zugreifen und sie verwenden können. Wenn wir seinen Umfang verstehen, können wir Mustervariablen effizient nutzen, um Datenstrukturen abzugleichen und effizienten und fehlerfreien Code zu schreiben.

Das obige ist der detaillierte Inhalt vonDen Umfang von Mustervariablen in Java verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn