首先要定义一个函数型接口
interface Count{
void count(int a);
}
1、实现类
public class TestLambda {
public static void main(String[] args) {
Count1 count1 = new Count1();
count1.count(3);
}
}
//1、接口
interface Count{
void count(int a);
}
//2、实现类
class Count1 implements Count{
@Override
public void count(int a) {
System.out.println("数到:"+a);
}
}
2、静态内部类
public class TestLambda {
//2、静态内部类
static class Count2 implements Count{
@Override
public void count(int a) {
System.out.println("数到:"+a);
}
}
public static void main(String[] args) {
Count2 count2 = new Count2();
count2.count(3);
}
}
//1、接口
interface Count{
void count(int a);
}
3、局部内部类
public class TestLambda {
public static void main(String[] args) {
Count3 count3 = new Count3();
count3.count(3);
//3、局部内部类
class Count4 implements Count{
@Override
public void count(int a) {
System.out.println("数到:"+a);
}
}
}
}
//1、接口
interface Count{
void count(int a);
}
4、匿名内部类
public class TestLambda {
public static void main(String[] args) {
Count count;
//4、匿名内部类
count = new Count{
@Override
public void count(int a) {
System.out.println("数到:"+a);
}
}
count.count(3);
}
}
//1、接口
interface Count{
void count(int a);
}
5、Lambda
(1)Lambda表达式
public class TestLambda {
public static void main(String[] args) {
Count count;
//4、Lambda
count = (int a) ->{
System.out.println("数到:"+a);
};
count.count(3);
}
}
//1、接口
interface Count{
void count(int a);
}
(2)Lambda表达式简化-简化括号
public class TestLambda {
public static void main(String[] args) {
Count count;
//5、Lambda 去掉类型值
count = (a,b) ->{
System.out.println("数到:"+a);
};
count.count(3);
}
}
//1、接口
interface Count{
void count(int a,int b);
}
(3)Lambda表达式简化-简化成一行
public class TestLambda {
public static void main(String[] args) {
Count count;
//6、Lambda 简化成一行
count = (a,b) ->System.out.println("数到:"+a);
count.count(3);
}
}
//1、接口
interface Count{
void count(int a,int b);
}
注意:
- lambda表达式只能有一行代码的时候才能简化成一行,如果多行就用代码块{}包裹
- 前提是接口为函数式接口(就是接口里面只有一个方法)
- 多参数也可以去掉参数的类型,要去掉就都要去掉,必须加上括号!!!