Heim  >  Artikel  >  Java  >  Analyse von Java-Lambda-Ausdrücken und generischen Anwendungsbeispielen

Analyse von Java-Lambda-Ausdrücken und generischen Anwendungsbeispielen

PHPz
PHPznach vorne
2023-05-03 18:16:07980Durchsuche

Generika

Grammatikdefinition von Generika

Klassenklassenname 953ab6247467d6bcc6e21fd1d8070233{ private generische Kennung 1, Variablenname; häufig verwendete generische Kennungen: T, E, K ,V } Normale Schreibmethode darin

public class GenericDemo<K> {
    //定义数组
    private K[] arr;
}

Unter Verwendung der Syntax von Generika

  • Klassenname06c937d83654f0a53345e21d22bb8532 Objektname = neuer Klassenname44981fe36381f4da7be9a578b7031c7b()

  • jdk1.7 Danach kann Folgendes sein: weggelassen

  • Klassenname 20d24fcd5d514fac9034e35a5d2c59e5 Objektname = neuer Klassenname a8093152e673feb7aba1828c43532094 ()

generische Zusammenfassung

  • Typisierung der Parameter, wodurch die Definition einer Klasse universeller wird

  • Generics unterstützen keine Basistypen, da Basistypen zur Kompilierungszeit nicht in Object konvertiert werden können Dieselbe generische Klasse kann logischerweise als mehrere verschiedene Typen betrachtet werden, aber in Wirklichkeit sind sie vom gleichen Typ. Beispiel: Sogar der Typ T des Generikums muss konsistent sein und der geschriebene Inhalt muss derselbe sein.)

  • Wenn die übergeordnete Klasse keinen Typ angibt, muss die übergeordnete Klasse als Objekttyp behandelt werden
  • public class Child<T> extends Parent<T> {
    }

    Der child Die Klasse ist nicht generisch und die übergeordnete Klasse muss den generischen Typ angeben.

  • Wenn die übergeordnete Klasse den Typ nicht angibt, muss die übergeordnete Klasse ihn als Objekttyp behandeln.
  • Generische Schnittstelle

Die Syntaxdefinition der generischen Schnittstelle: Schnittstellenschnittstellenname< ; Generische Kennung 2, …>{ Generische Kennung Methodenname (); … Die Schnittstelle muss konsistent sein. Wenn der Typ nicht angegeben ist, wird die Schnittstelle gemäß dem Objekttyp verarbeitet. Die Implementierungsklasse ist nicht generisch und die Schnittstelle muss den Datentyp der generischen Schnittstelle angeben . Wenn die Schnittstelle den Typ nicht angibt, wird die Schnittstelle gemäß dem Objekttyp verarbeitet ; Funktionsdenken versucht, das komplexe Schreiben von Objekten zu ignorieren und „betont, was zu tun ist, nicht die Form, in der es getan werden soll“ Definieren eines Funktionsausdrucks anstelle einer vereinfachten Methode zum Schreiben eines Funktionsaufrufs

Lambda-Ausdrucksformat

Drei Elemente: formale Parameter, Pfeil, Codeblock

    Form als: (formeller Parameter)-> Codeblock
  • formale Parameter, trennen Sie diese durch Kommas, lassen Sie leere Klammern und keine Leerzeichen stehen.
  • -> zeigt die Ausführung an
  • Codeblock: bestimmte zu erledigende Dinge

Voraussetzungen für die Verwendung: Schnittstelle verwenden: Es gibt und gibt nur eine abstrakte Methode in der Schnittstelle

  • Codebeispiel:

    package com.lambda;
    public class Lambda {
        public static void main(String[] args) {
            //正常写法
            Mythread mythread = new Mythread();
            Thread t = new Thread(mythread);
            t.start();
            //匿名内部类
            new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("多线程1就绪了");
                }
            }).start();
            //lambda表达式:创建线程
            new Thread(()->{
                System.out.println("多线程2就绪了");
            }).start();
        }
    }
    class Mythread implements Runnable{
        @Override
        public void run() {
            System.out.println("多线程就绪");
        }
    }

Das obige ist der detaillierte Inhalt vonAnalyse von Java-Lambda-Ausdrücken und generischen Anwendungsbeispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen