LambdaThread-簡化代碼
public class LambdaThread {
static class Test implements Runnable{
//靜態內部類
public void run() {
for(int i=0;i<5;i++) {
System.out.println("靜態內部類");
}
System.out.println("-------------");
}
}
public static void main(String[] args) {
new Thread(new Test()).start();
//局部內部類
class Test2 implements Runnable{
public void run() {
for(int i=0;i<5;i++) {
System.out.println("局部內部類");
}
System.out.println("-------------");
}
}
new Thread(new Test2()).start();
//匿名內部類
new Thread(new Runnable(){
public void run() {
for(int i=0;i<5;i++) {
System.out.println("匿名內部類");
}
System.out.println("-------------");
}
}).start();
//jdk8 簡化后 lambda
new Thread(()->{
for(int i=0;i<5;i++)
System.out.println("簡化后");
}).start();
}
}
推導Lambda
public class Lambda {
static class Test2 implements NewLambda{
public void lambda() {
System.out.println("推導Lambda二:靜態內部類");
}
}
public static void main(String[] args) {
class Test3 implements NewLambda{
public void lambda() {
System.out.println("推導Lambda四:方法內部類");
}
}
//外部類
NewLambda nl = new Test();
nl.lambda();
//靜態內部類
nl = new Test2();
nl.lambda();
//匿名內部類
nl = ()->{
System.out.println("推導Lambda三:匿名內部類");
};
nl.lambda();
//方法內部類
nl = new Test3();
nl.lambda();
}
}
interface NewLambda{
void lambda();
}
class Test implements NewLambda{
public void lambda() {
System.out.println("推導Lambda一");
}
}
參數
public class LambdaTest1 {
public static void main(String[] args) {
Person p = (String name)->{
System.out.println(name);
};
p.data("張三");
//簡化
p = (name)->System.out.println(name);
p.data("李四");
p = name->System.out.println(name);
p.data("王五");
}
}
interface Person{
void data(String name);
}
參數 + 返回值
public class LambdaTest2 {
public static void main(String[] args) {
Calculator c = (int a,int b)->{
return a+b;
};
System.out.println(c.add(5, 3));
c = (a,b)->{
return a+b;
};
System.out.println(c.add(10, 4));
c = (a,b)->a+b;
System.out.println(c.add(20, 10));
}
}
interface Calculator {
int add(int a, int b);
}
案例:簡化Thread
public class LambdaTest3 {
public static void main(String[] args) {
new Thread(()->{
for(int i=0;i<5;i++)
System.out.println("學習lambda");
}).start();
new Thread(()->System.out.println("實現簡化線程")).start();
}
}