Alles, was Sie verstehen müssen, ist "Typ".
Eine Variable hat einen Typ. Beispiel:
int i, double d…
Ein Objekt hat einen Typ (A-Klasse). ZB:
String s, Number n, Object o, MyClass m…
Eine Funktion hat einen Typ. ZB:
void function() <= this type is: a function with no return and no param.
void function (type param) <= this type is: a function with no return with a param of type ‘type’
type function (type param) <= this type is: a function with a return of type ‘type’ and a param of type ‘type’
Was ist ein Block/Schließung/Lambda?
Es ist im Grunde eine lokale Funktion eines bestimmten Typs, die an eine andere Funktion als Parameter übergeben wird.
So haben wir gehört: eine Funktion, die eine Funktion eines bestimmten Typs als Parameter übernimmt. Und die Funktion, die die Funktion empfängt und startet es!
Die Hauptanwendung ist: CallBack und Comparaison Funktionen. Aber der Traum ist offen.
Wir können machen, dass als:
type function(type function_param) {
excute the function_param
}
Wie dies in Java sagen.
1/erklären die Art des Blocks/Schließ/lambda
2/erstellen, die Funktion (in einer Klasse oder nicht), die diese Art von Typ wie param
3/erstellen, um die lokale Funktion erhalten vom Typ des Blocks/Schließung/Lambda
4/übergeben Sie es als Parameter für die Funktion, die es verwenden.
Eg:
// 1 declaring the type of block/closure/lambda
interface CallBack {
public int function(String string);
}
class MyClass {
private String name;
MyClass(String name) { this.name = name; }
void display() { System.out.println(this.name); }
// 2 creating the function that which that kind of type as param
int myFunction(CallBack funcCallBack) {
return funcCallBack.function(name);
}
}
public class Main {
public static void main(String[] args) {
// 3 Create the local function of the type of the block/closure/lambda
CallBack message = (String string) -> {
System.out.println("Message: "+string);
return 1;
};
MyClass mc = new MyClass("MyClass");
mc.display();
// 4 pass it as param to the function which use it.
int res = mc.myFunction(message);
System.out.println(res);
}
}
Ausgang
MyClass
Nachricht: MyClass
deklariert wird Dies ist keine echte Frage - es fragt nicht nach einem bestimmten Problem. –
Es ist auch zu breit, und die Antwort ist an mehreren Stellen ungenau. – chrylis
Java basiert auf C und C++, also ist das Verhalten von '{}' sehr ähnlich. Es ist nicht klar, was dein Zweifel ist. –