一、继承Runnable接口
1.内部静态类
package com.sxt.io2;
public class LambdaThread {
static class Test implements Runnable{
@Override
public void run() {
for(int i=0;i<20;i++) System.out.println("coding...");
}
}
public static void main(String[] args) {
new Thread(new Test()).start();
for(int i=0;i<20;i++) System.out.println("reading...");
}
}
2.方法内部类(局部内部类)
package com.sxt.io2;
public class LambdaThread {
public static void main(String[] args) {
class Test implements Runnable{
@Override
public void run() {
for (int i = 0; i < 20; i++) System.out.println("coding...");
}
}
new Thread(new Test()).start();
for (int i = 0; i < 20; i++) System.out.println("reading...");
}
}
3.匿名内部类
package com.sxt.io2;
public class LambdaThread {
public static void main(String[] args) {
new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 20; i++) System.out.println("coding...");
}
}).start();
for (int i = 0; i < 20; i++) System.out.println("reading...");
}
}
4.lambda简化
package com.sxt.io2;
public class LambdaThread {
public static void main(String[] args) {
new Thread(()->{
for (int i = 0; i < 20; i++) System.out.println("coding...");
}
).start();
for (int i = 0; i < 20; i++) System.out.println("reading...");
}
}
二、自定义接口
package com.sxt.io2;
public class LambdaTest2{
//内部静态类
static class Test implements Ilike{
@Override
public void Like() {
System.out.println("like1...");
}
}
public static void main(String[] args) {
Ilike t=new Test();
t.Like();
//局部方法类
class Test01 implements Ilike{
@Override
public void Like() {
System.out.println("like2...");
}
}
t=new Test01();
t.Like();
//匿名内部类
t=new Ilike()
{
public void Like() {
System.out.println("like3...");
}
};
t.Like();
//lambda简化
t=()->System.out.println("like4...");
t.Like();
}
interface Ilike{
void Like();
}
}
问题总结:
使用接口标识变量:Ilike t=new Test();Like t=new Test2();Ilike t=new Test3();...都可用t.Like()调用接口方法
三、接口方法中有参数
package com.sxt.io2;
interface ILove{
void Love(int a);
}
public class LambdaTest3 {
public static void main(String[] args) {
ILove love=(a)-> System.out.println("I love..."+a);
love.Love(3);
}
}
四、接口方法中有参数和返回值
package com.sxt.io2;
interface IInterest{
int interest(int a,int b);
}
public class LambdaTest4 {
public static void main(String[] args) {
IInterest interest =(c,d)->c+d;
System.out.println(interest.interest(30,40));
}
}