cinq minutes Lambda d'apprendre en Java

Les expressions lambda en Java

Qu'est-ce que les expressions Lambda

Les expressions lambda sont une fonction anonyme est ajouté dans jdk1.8
avant jdk1.8, nous ne pouvons utiliser des méthodes anonymes et interfaces d'héritage à mettre en œuvre la méthode définie dans l'interface en
utilisant des expressions lambda sont également limitées, l' expression Lambda le type ne peut avoir une seule et unique méthode qui n'est pas mis en œuvre dans l'interface utilisée par
conséquent, jdk1.8 a également ajouté un mot - clé par défaut, la méthode par défaut est marquée par la nécessité d'écrire une implémentation par défaut

Utilisation simple des expressions Lambda

Tout d'abord, nous allons définir quelques interfaces, ces interfaces ne sont définies que pour la commodité des expressions lambda montrent

/**
 * 			无返回值的接口
 * @author Administrator
 *
 */
interface SingleParameter
{
	  void printin(Object msg);
}
/**
 * 			有返回值的接口
 * @author Administrator
 *
 */
interface SingleParameterReturn
{
	Integer triploid(Integer num);
}
/**
 * 			多参数有返回值的接口
 * @author Administrator
 *
 */
interface MultiParameterReturn
{
	Integer triploid(Integer num,Integer num2);
}
/**
 *      无参有返回值的接口
 * @author Administrator
 *
 */
interface PersonCreater  {
	Person getPerson();
}
/**
 * 返回值对象
 * @author Administrator
 *
 */
class Person{
	private LambdaDemo demo;
	public Person()
	{
		demo=LambdaDemo.getLambdaDemo();
	}
	public LambdaDemo getDemo() {
		return demo;
	}
}

Après défini les interfaces que nous utilisons pour utiliser les expressions Lambda

SingleParameter singleParameter=s->{System.err.println(s);};			  // 这是无返回值的lambda表达式
singleParameter.printin("这是无返回值的lambda表达式");				

Parce que l'
interface SingleParameter seulement
printin void (Object msg); méthode n'est pas mis en œuvre de
façon
s -> {System.err.println (s) ;}; cela , nous pouvons être considérés comme le code qui implémente la méthode
s pour les méthodes msg
-> représente le point le corps de la méthode
{System.err.println (s);} mettre en oeuvre la méthode représentative

	无返回值的方法实现了我们再来看有返回值的SingleParameterReturn是怎么实现的
SingleParameterReturn singleParameterReturn=s->s*3;					  // 这是无返回值的lambda表达式
System.err.println(singleParameterReturn.triploid(12));		

SingleParameterReturn dans la méthode non réalisée est
entier triploïdes (entier num);
cependant, dans le code ci - dessus nous écrivons seulement un petit morceau de code afin que vous pouvez remplacer cette méthode
S> S 3
S est toujours le même au nom des méthodes num
-> méthode du point corps
s
. 3 est en fait égal retour s * 3, seul le raccourci ci - dessus

Étant donné que les paramètres individuels sont compris, alors les expressions Lambda nous regardons plusieurs paramètres

MultiParameterReturn multiParameterReturn=(s,m)->s*m;				 // 这是有返回值的多参数的lambda表达式 多参数时必须加上小括号
System.err.println(multiParameterReturn.triploid(12,30));	

MultiParameterReturn dans la méthode non réalisée est
entier triploïdes (NUM Entier, Entier num2),
les expressions lambda sont
(s, m) -> s m
gens vraiment intelligents ont déjà vu est ce que signifie
les représentants de NUM
m Code num2
-> dirigé vers un corps de la méthode
S
m est effectivement retournée multiplier deux nombres

Ensuite, appelez les méthodes d'autres classes depuis un seul paramètre multi-paramètres, nous devons comprendre la difficulté de mise à niveau des expressions Lambda

SingleParameter singleParameter2=System.err::println;					// 这是调用其他类的方法的lambda表达式
singleParameter2.printin("这是调用其他类的方法的lambda表达式");    

System.err :: println,
c'est en fait très simple sens du code
avant :: est appelé objet
méthode est appelée après ::
Cela équivaut à l' utilisation System.err.println (), mais plutôt notre approche

Semble difficile de mettre à niveau, en fait, il est aussi facile de comprendre
que nous venons enfin de créer des objets en utilisant des méthodes expressions Lambda de mise en œuvre de l' objet

PersonCreater p1=()->new Person();													//这是创建对象的lambda表达式
PersonCreater p2=Person::new;															//这是创建对象的lambda表达式  这种写法等价于上面那种写法
System.err.println(p1.getPerson().getDemo()==p2.getPerson().getDemo());   

Le premier est tout simplement pas un voleur
méthode () pour le compte vide
-> corps de la méthode d'exécution de
nouveaux objets méthode renvoie personne () les mettre en œuvre pour créer une
seconde possible un peu difficile ,
mais les deux sont de le voir créer les objets d'interface, il montre
( ;> nouvelle personne () -) ; et personne :: nouvelle
implémentation interne est la même
personne est de représenter l'objet d'opération
nouvel objet est créé au nom de
tout retour final est l'objet créé une
utilisation simple de ce qui précède est Lambda

Les scénarios d'utilisation de Lambda

L'exemple le plus simple
Liste des forEach
il est de montrer le plus Lambda utiliser
sa vitesse réduit non seulement la quantité de code qui améliore également le code
de la vue Liste en utilisant des
expressions lambda Sans surprise, puis sera le développement futur de tendance

Publié deux articles originaux · louange gagné 5 · Vues 124

Je suppose que tu aimes

Origine blog.csdn.net/qq_41961553/article/details/105368970
conseillé
Classement