1、外部类
public class test{ public static void main(String[] args) { ILove love=new Love(); love.love(2); } } class Love implements ILove{ public void love(int a){ System.out.println("I love you"+a); } } interface ILove { void love(int a); }
2、静态内部类
public class test{ static class Love implements ILove{ public void love(int a){ System.out.println("I love you"+a); } } public static void main(String[] args) { ILove love=new Love(); love.love(2); } } interface ILove { void love(int a); }
3、局部内部类
public class test{ public static void main(String[] args) { class Love implements ILove{ public void love(int a){ System.out.println("I love you"+a); } } ILove love=new Love(); love.love(2); } } interface ILove { void love(int a); }
4、匿名内部类(没有名字,通过接口实现)
public class test{ public static void main(String[] args) { ILove love=new ILove(){ public void love(int a){ System.out.println("I love you"+a); } }; love.love(2); } } interface ILove { void love(int a); }
5、lamda表达式简化(只能在函数式接口中使用)
public class test{ public static void main(String[] args) { ILove love=(int a)->{ System.out.println("I love you"+a); }; love.love(2); } } interface ILove { void love(int a); }
①去掉参数类型(多个参数也能去掉,但是要去掉都去掉)
public class test{ public static void main(String[] args) { ILove love=(a)->{ System.out.println("I love you"+a); }; love.love(2); } } interface ILove { void love(int a); }
②去掉()(多参数必须加上())
public class test{ public static void main(String[] args) { ILove love=a->{ System.out.println("I love you"+a); }; love.love(2); } } interface ILove { void love(int a); }
③去掉{}(函数体有多行,则不能去掉)
public class test{ public static void main(String[] args) { ILove love=a->System.out.println("I love you"+a); love.love(2); } } interface ILove { void love(int a); }