====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''.