Outils pour utilisateurs

Outils du site


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

Types de donnée primitifs 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<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