kill -9 批量刪除 oracle_實用!Oracle資料庫常用命令整理
阿新 • • 發佈:2021-02-11
lamda表示式是jdk1.8新特性之一
lamda表示式的前提:有一個函式式介面。
函式式介面定義:介面中有一個函式。
下面用程式碼做演示。
首先介面中的函式時無參的
本來是下面這樣的:介面,介面實現類,和main方法。也就是說需要一個介面,兩個類。
package com.yang;
public class Noargs {
public static void main(String[] args) {
Ilike like = new Like();
like.likeLamda();
}
}
//定義函式式介面
interface Ilike{
void likeLamda();
}
//定義介面實現類
class Like implements Ilike{
@Override
public void likeLamda() {
System.out.println("I like Java");
}
}
然後實現類可以用靜態內部類代替,就演化成:一個介面,一個類!
package com.yang;
public class Noargs {
//靜態內部類
static class Like implements Ilike{
@Override
public void likeLamda() {
System.out.println("I like Java");
}
}
public static void main(String[] args) {
Ilike like = new Like();
like.likeLamda();
}
}
//定義函式式介面
interface Ilike{
void likeLamda ();
}
而靜態內部類還可以用區域性內部類來代替。
package com.yang;
public class Noargs {
public static void main(String[] args) {
//區域性內部類
class Like implements Ilike{
@Override
public void likeLamda() {
System.out.println("I like Java");
}
}
Ilike like = new Like();
like.likeLamda();
}
}
//定義函式式介面
interface Ilike{
void likeLamda();
}
區域性內部類再簡化,就是匿名內部類:沒有類的名稱,必須藉助介面或者父類。
package com.yang;
public class Noargs {
public static void main(String[] args) {
//匿名內部類
Ilike like = new Ilike() {
@Override
public void likeLamda() {
System.out.println("I like Java");
}
};
like.likeLamda();
}
}
//定義函式式介面
interface Ilike{
void likeLamda();
}
再簡化,就是lamda表示式了。比匿名內部類,省略了:
package com.yang;
public class Noargs {
public static void main(String[] args) {
//lamda表示式
Ilike like = () -> {
System.out.println("I like Java");
};
like.likeLamda();
}
}
//定義函式式介面
interface Ilike{
void likeLamda();
}
然後是有參的
package com.yang;
public class Args {
public static void main(String[] args) {
Ilove love = new Love();
love.loveLamda(2);
}
}
//函式式介面
interface Ilove{
void loveLamda(int a);
}
//實現類
class Love implements Ilove{
@Override
public void loveLamda(int a) {
System.out.println("I love Java" + a);
}
}
靜態內部類:
package com.yang;
public class Args {
//靜態內部類
static class Love implements Ilove{
@Override
public void loveLamda(int a) {
System.out.println("I love Java" + a);
}
}
public static void main(String[] args) {
Ilove love = new Love();
love.loveLamda(2);
}
}
//函式式介面
interface Ilove{
void loveLamda(int a);
}
區域性內部類:
package com.yang;
public class Args {
public static void main(String[] args) {
//區域性內部類
class Love implements Ilove{
@Override
public void loveLamda(int a) {
System.out.println("I love Java" + a);
}
}
Ilove love = new Love();
love.loveLamda(2);
}
}
//函式式介面
interface Ilove{
void loveLamda(int a);
}
匿名內部類:
package com.yang;
public class Args {
public static void main(String[] args) {
//匿名內部類
Ilove love = new Ilove(){
@Override
public void loveLamda(int a) {
System.out.println("I love Java" + a);
}
};
}
}
//函式式介面
interface Ilove{
void loveLamda(int a);
}
lamda表示式:
package com.yang;
public class Args {
public static void main(String[] args) {
Ilove love = (int a) ->{
System.out.println("I love Java" + a);
};
love.loveLamda(2);
}
}
//函式式介面
interface Ilove{
void loveLamda(int a);
}
還可以再簡化:去掉引數型別。
package com.yang;
public class Args {
public static void main(String[] args) {
//去掉引數型別
Ilove love = (a) ->{
System.out.println("I love Java" + a);
};
love.loveLamda(2);
}
}
//函式式介面
interface Ilove{
void loveLamda(int a);
}
還可以去掉括號:
package com.yang;
public class Args {
public static void main(String[] args) {
//去掉括號
Ilove love = a ->{
System.out.println("I love Java" + a);
};
love.loveLamda(2);
}
}
//函式式介面
interface Ilove{
void loveLamda(int a);
}
還可以去掉花括號:
package com.yang;
public class Args {
public static void main(String[] args) {
//去掉花括號
Ilove love = a -> System.out.println("I love Java" + a);
love.loveLamda(2);
}
}
//函式式介面
interface Ilove{
void loveLamda(int a);
}
但是要注意:
1.lamda表示式只能在只有一行程式碼的情況下才能簡化為一行(就是去掉花括號的情況),如果有多行的話,只能用花括號。
2.前提是:介面時函式式介面
3.如果是多個引數的話,去掉引數型別時,要去掉只能都去掉,而且必須要加上括號。