====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''
[[http://imss-www.upmf-grenoble.fr/prevert/Prog/Java/CoursJava/TypeDeDonneePrimitifs.html|Types de donnée primitifs]] {{ :lang:java:variable:cours_java_types_de_donnee_primitifs_2020-02-11_23_58_01_.html |Archive le 11/02/2020}}
===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 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
[[https://stackoverflow.com/questions/29945627/java-8-lambda-void-argument|Java 8 lambda Void argument]] {{ :lang:java:variable:java_8_lambda_void_argument_-_stack_overflow_11_04_2023_08_28_43_.html |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 {
public Six apply(One one, Two two, Three three, Four four, Five five);
}
[[https://stackoverflow.com/questions/27872387/can-a-java-lambda-have-more-than-1-parameter|Can a java lambda have more than 1 parameter?]] {{ :lang:java:variable:can_a_java_lambda_have_more_than_1_parameter_-_stack_overflow_11_04_2023_08_28_54_.html |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 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''.