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