lang:java:variable
POO
Type primitif
- Booléan :
boolean
- Caractère :
char
- Nombre entier :
byte
,short
,int
,long
. Il n'existe pas de type non signé.
- Nombre à virgule :
float
,double
Pointeur sur la méthode d'une classe
On passe par un foncteur :
import java.util.function.Function; public class Test { public Boolean f() { System.out.println("Fonction"); return true; } } Function<Test, Boolean> f = Test::f; Test t = new Test(); f.apply(t);
Liste des types permettant de stocker des pointeurs sur fonction :
Supplier () -> x Consumer x -> () BiConsumer x, y -> () Callable () -> x throws ex Runnable () -> () Function x -> y BiFunction x,y -> z Predicate x -> boolean UnaryOperator x1 -> x2 BinaryOperator x1,x2 -> x3
Java 8 lambda Void argument Archive du 29/04/2015 le 11/04/2023
Et pour une fonction qui a plus de 2 paramètres, il faut le définir soit même.
@FunctionalInterface interface Function6<One, Two, Three, Four, Five, Six> { public Six apply(One one, Two two, Three three, Four four, Five five); }
Can a java lambda have more than 1 parameter? Archive du 10/01/2015 le 11/04/2023
Passage en copie ou référence
Quand une variable est passé en paramètre, elle est copié si c'est un type primitif, elle est passé en référence sinon.
Programmation fonctionelle
Initialisation complexe d'une variable constante
Plutôt que
String str; if (i == 1) str = "un"; else if (i == 2) str = "deux"; else str = "trois";
écrire
Function<Integer, String> strLambdb = ii -> { if (i == 1) return "un"; else if (i == 2) return "deux"; else return "trois"; }; final String str = strLambdb.apply(i);
Ce n'est pas encore le style d'écriture parfait mais ça permet de mettre la variable final
.
lang/java/variable.txt · Dernière modification : 2023/04/11 09:28 de root