lambda表示式主要是替換了原有匿名內部類的寫法,也就是簡化了匿名內部類的寫法。lambda語法結構:
(引數1,引數2...)->
先看乙個使用匿名內部類定義乙個新執行緒的方法:
@test
public
void
test1()
}}).start();
for(int x=0;x<100;x++)
}
使用lambda表示式則可以簡化匿名內部類的寫法:
@test
public void test2()
}).start
(); for
(int i=0;i<100;i++)
}
好吧,**是不是極大的簡化了?
再來看看乙個例子,傳統方法過濾乙個資料夾中的檔案是這樣的:
@test
public
void
test3()
});for(file f:fs)
}
使用了lambda表示式之後怎樣過濾檔案呢?
@test
public void test4());
for(file f:fs)
}
lambda表示式,既然是一種表示式,它就不是內部類,這樣編譯過後不會產生內部類,它只是內部類的另一種實現方式。
再看看給set集合排序的例子:
傳統方式是這樣的:
@test
public void test5()
});set.add("ac");
set.add("acfa");
set.add("acfadfada");
set.add("ac5423543534524");
system.out.println(set);
}
使用了lambda表示式之後呢?
@test
public void test6() );
set.add
("ac");
set.add
("acfa");
set.add
("acfadfada");
set.add
("ac5423543534524");
system.out.println
(set);
}
lambda侷限性:
1.如果介面有多個方法需要實現,就只能通過匿名內部類來實現,而不可以使用lambda表示式。
2.要使用lambda表示式的地方引數本身就是固定的,只有乙個,例如new thread(),要麼沒有引數,要麼只能是new runnable().
JDK8新特性之Lambda表示式
j a 8的乙個大亮點是引入lambda表示式,使用它設計的 會更加簡潔。當開發者在編寫lambda表示式時,也會隨之被編譯成乙個函式式介面。一行執行語句的寫法 parameters expression如果有多行執行語句,可以加上 parameters 如 public intadd int x,...
Jdk8新特性之排序
comparator提供的方法 author wgr create 2020 4 13 16 12 public class person public string getname public void setname string name public integer getage publ...
jdk8新特性 lambda表示式
1 什麼是lambda表示式?lambda表示式 也叫做閉包 是jdk8中的新語法,它允許我們將函式當成引數傳遞給某個方法或者將 本身作為資料進行處理。2 lambda表示式示例 2.1 用lambda表示式實現runnable 通過匿名內部類方法重寫runnable介面 new thread ne...