0305

Lambda表达式的类型被称为target type 即目标类型。
目标类型必须是 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);
    }
}

猜你喜欢

转载自huadianfanxing.iteye.com/blog/2360401
今日推荐