目标类型必须是 functional interface 即 函数式接口:只包含一个抽象方法的接口,但可以有其他默认、类方法。定义接口前@FunctionalInterface
若使用匿名内部类创建函数式接口的实例,可以改用lambda表达式(见代码)
lambda表达式的结果就是被当成对象,所以可以用其进行赋值。
弱lambda表达式代码块中只有一条代码,可以在代码块中使用方法引用和构造器引用。
支持①引用类方法②引用特定对象的实例方法③引用某类对象的实例方法④引用构造器(代码仅列出④)
import javax.swing.JFrame; @FunctionalInterface interface WoTest { JFrame win(String title); } public class LianXi { public static void main(String[]args) { //以下三种一样。 WoTest w3=JFrame::new; //具体判断用的是JFrame的哪个构造器(方法同理)看line22 形参决定。 WoTest wt=a->new JFrame(a); WoTest wt2=new WoTest() { @Override public JFrame win(String title) { return new JFrame(title); } }; JFrame jf=wt.win("新窗口"); System.out.print(jf); } }