Der in Java 10 eingeführte Schnittpunkttyp ist erstaunlich (?)

In Java 10 ist es möglich, Variablen durch Typinferenz namens var zu deklarieren. Zum Beispiel var url = new URL("http://ukiuni.com"); Auf diese Weise wird die URL vom Typ abgeleitet und zu einer URL-Typvariablen.

Bis zu diesem Punkt endet die Geschichte mit "Hey. Es ist ein Syntaxzucker, der die Beschreibung von Variablen weglassen kann." In der Java 10-Typinferenz können jedoch auch "unaussprechliche Typen abgeleitet werden". Ich werde.

.. .. .. Ich weiß nicht, wovon du sprichst, aber ich weiß auch nicht, wovon du sprichst.

Hier ist der Beispielcode.

Sample.java


public class Sample{
  public static void main(String[] args) {
    var ins = (Foo & Bar) ()->{};
    ins.foo();
    ins.bar();
    ins.forFunctionalInterfaceMethod(); //☓ Sie können es aufrufen, ohne es zu implementieren → Korrigiert, indem Sie Kommentare erhalten. 3 Zeilen oben()->{}Ist implementiert.
    ins.toString(); //Es ist auch ein Objekttyp.
  }

  interface Base {
    void forFunctionalInterfaceMethod();
  }

  interface Foo extends Base {
    default void foo() {
      System.out.println("foo");
    }
  }

  interface Bar extends Base {
    default void bar() {
      System.out.println("bar");
    }
  }
}

Wenn dies in Java 10 kompiliert und ausgeführt wird, sieht die Ausgabe folgendermaßen aus.

$ javac Sample.java  && java Sample
foo
bar

Mit anderen Worten var ins = (Foo & Bar) ()->{}; Ins ist ein Foo-Typ, ein Balkentyp, ein Basistyp, der das übergeordnete Element der Schnittstelle ist, und ein Objekttyp. Dies ist der Schnittpunkttyp, der ein "unaussprechlicher Typ" ist. Jetzt können Sie so etwas wie dynamisches Mixin machen.

.. .. .. In welchen Fällen kann es bequem verwendet werden? .. .. Wenn Sie irgendwelche Einsichten haben, kommentieren Sie bitte.

Recommended Posts

Der in Java 10 eingeführte Schnittpunkttyp ist erstaunlich (?)
Was ist die Hauptmethode in Java?
Typbestimmung in Java
Organisiertes Memo im Kopf (Java - Datentyp)
[Java] In der Ausgabe wird etwas als "-0.0" angezeigt
Was ist besser, Kotlin oder zukünftiges Java?
Die Geschichte, dass .java auch in Unity 2018 erstellt wurde
Probieren Sie den Funktionstyp in Java aus! ①
5. Tag von Java
[Java] "T" ist in der API-Antwort im Datumstyp JSON enthalten
Greifen Sie mit Java auf die Netzwerkschnittstelle zu
Errate den Zeichencode in Java
Geben Sie den Java-Speicherort in eclipse.ini an
Wo ist die Zeitzone von Javas LocalDateTime.now ()?
Entpacken Sie die Zip-Datei in Java
Analysieren der COTOHA-API-Syntaxanalyse in Java
Rufen Sie die Super-Methode in Java auf
Dies ist die Excel-Ausgabe in Java! Offizielle Dokumentübersetzung "JXLS"
Die in /lib/calendars.properties von Java jre festgelegte Millisekunde ist UTC
[Android / Java] Verstehen Sie den Beschreibungstyp in den Listener-Einstellungen (Schaltflächeninstallation).
Was ist eine Klasse in der Java-Sprache (3 /?)
Holen Sie sich das Ergebnis von POST in Java
In Bezug auf den Vergleich der Zeichenfolgentypäquivalenz in Java
Spring Autowired wird im Konstruktor geschrieben
[Leicht verständliche Erklärung! ] Konvertierung des Referenztyptyps in Java
[Java] Zeigt die Bitfolge an, die in der Bytetypvariablen auf der Konsole gespeichert ist
Java-Referenz zum Verständnis in der Abbildung
Was ist der beste Migrationsdatentyp? ??
Versuchen Sie es mit der Stream-API in Java
Rufen Sie die Windows-Benachrichtigungs-API in Java auf
[Persönliches Memo] Der Java-Datentyp ist ärgerlich
Ich habe das neue Yuan-Problem in Java ausprobiert
[Java] Einführung in den Wildcard-Typ "Generics Boundary Wildcard"
Anmerkung: [Java] Wenn sich eine Datei im überwachten Verzeichnis befindet, verarbeiten Sie sie.
[Java] Verwenden Sie kryptografische Technologie mit Standardbibliotheken
Notizen im Kopf organisieren (Java-Arrangement)
Was ist das beste Lesen von Dateien (Java)
Was ist eine Klasse in der Java-Sprache (1 /?)
Versuchen Sie, den CORBA-Dienst unter Java 11+ aufzurufen
[Java] Schreiben Sie ein Programmierquiz SET INTERSECTION mit StreamAPI in eine Zeile
Was ist eine Klasse in der Java-Sprache (2 /?)
Die Java EE Security API ist da!
Grund, L zu der Zahl hinzuzufügen, die in den langen Java-Typ eingegeben werden soll
So erhalten Sie das Datum mit Java
Die Geschichte des Schreibens von Java in Emacs
Konsoleneingabe in Java (Verständnis des Mechanismus)
Was ist CHECKSTYLE: OFF in der Java-Quelle? Checkstyle zu wissen von
[Java] Unterschied zwischen gleich und == in einer Zeichenfolge, die ein Referenztyp ist
[Java] Wo befindet sich die Implementierungsklasse der Annotation, die in BeanValidation vorhanden ist?
Informationen zur Bedeutung von Typvariablen, E, T usw., die in in Java verwendeten Generika verwendet werden
[Java] Ist es nicht erforderlich, "Identität" bei der Implementierung der equals () -Methode zu überprüfen?
Was ist ... (3 Punkte) in der Java-Quelle gefunden? Argument mit variabler Länge, von dem man wissen muss
In Bezug auf transiente Modifikatoren und Serialisierung in Java
[Java] Behandlung von Java Beans in der Methodenkette
Über die Verwirrung beim Starten von Java-Servern
Die Geschichte eines gewöhnlichen Othello in Java
Über die Idee anonymer Klassen in Java
Eine Geschichte über das JDK in der Java 11-Ära