package sunday; /* idea Lambda 接口组成更新 引用方法 */ public class
Demo
{ public static void main(String[] args) { //lambda(); //newInterface(); reference(); }//main public static void
idea()
{ /* 使用Lambda必须有(仅有一个抽象方法的接口); 匿名内部类与Lambda区别: 所需类型不同 使用限制不同 实现原理不同 一接口一方法可省参数类型,有且仅有一参数可省小括号,仅有一语句可省大括号分号return usePeg1(x->System.out.println(x));
usePeg1((int x)->{ return x+y; }); */ } public static void
lambda()
{ //匿名内部类 usePeg(new Peg() { @Override public void fly(String s) { System.out.println(s); System.out.println(“飞瀑流”); } }); //Lambda带参无返回值 usePeg((String s)->{ System.out.println(s); System.out.println(“飞瀑流”); }); //Lambda带参带返回值 usePeg1((int x,int y)->{ return x+y; }); } //接口组成更新 public static void
newInterface()
{ Tools tools = new Tools(); tools.show(); tools.show1(); Peg2.show3(); } //方法引用 public static void
reference()
{ //引用类的静态方法 usePeg(System.out::println); //引用对象的成员方法 Tools tools = new Tools(); usePeg(tools::show1); //引用类的构造方法 usePeg3(Tools::new); } //Lambda带参无返回值 public static void
usePeg(Peg peg)
{ peg.fly(“纸绘武身”); } //Lambda带参带返回值 public static void
usePeg1(Peg1 peg1)
{ int num=peg1.num(13,13); System.out.println(num); } //引用构造方法 public static void
usePeg3(Peg3 peg3)
{ Tools tools = peg3.peg3(4); System.out.println(tools.getAge()); } }//end package sunday;
public class
Tools
implements Peg2{ private int age;
public Tools(int age) { this.age = age; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public Tools() { }
@Override public void show() { System.out.println(“纸绘武身”); } public void show1(String s){ System.out.println(s); } } package sunday;
public interface
Peg
{ void fly(String s); } package sunday;
public interface
Peg1
{ int num(int x,int y); } package sunday;
public interface
Peg2
{ void show(); default void show1(){ show4(); System.out.println(“默认方法”); } static void show3(){ System.out.println(“静态方法”); } private void show4(){ System.out.println(“私有方法”); } } package sunday;
public interface
Peg3
{ Tools peg3(int age); }
|