Java8新特性之Lamada表达式、接口的默认方法、静态方法

接口的默认方法和静态方法:

Java8默认的方法和静态方法这个这两个新概念用来拓展接口的声明:

默认方法:允许在已有的接口中添加新方法,而同时又保持与旧版本的代码相兼容,默认方法与抽象方法不同之处在于抽象方法必须要求实现,但是默认方法则没有这个要求。接口的实现类默认继承默认方法。

静态方法:允许在已有的接口中添加静态方法,接口的静态方法属于接口本身,不能被继承,也需要提供实现方法。

   默认方法和静态方法的访问:

接口的静态方法:直接用接口的类名.方法名

接口的默认方法:得到接口实现类对象,直接用对象的引用.方法名。默认方法可以直接被覆盖。

接口的定义

/**

 *java8的静态方法和默认方法

 * @author JACK

 *

 */

publicinterface Java8Static {

    void method(String ma);

 //接口的默认方法

    defaultvoid fun1() {

       System.out.println("接口的默认方法");

    }

     //接口的静态方法

    publicstaticvoid fun2() {

       System.out.println("接口的静态方法");

    }

}

 

接口的实现类

public class Java8T implements Java8Static {

    @Override

    public void method(String ma) {

       System.out.println("接口方法的实现");

    }

       //重写接口的默认方法

       @Override

       public void fun1() {

              System.out.println("子类重写父类默认方法");

       }

       public static void main(String[] args) {

              //java8默认方法的访问

              Java8T ja=new Java8T();

              ja.fun1();

              //java8静态方法的访问

              Java8Static.fun2();

       }
}

Lamada表达式

Lamada表达式的本质只是一个语法糖(所谓的语法糖是由英国计算机科学家彼得.兰丁发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用),有编译器推断并帮你转换包装为常规的代码,使用更简单的代码实现同样的功能。

直白一点:java8中Lamada表达式就是匿名类的另一种更简洁的语法表达。

注意:Lamada表达式只适用于接口中只有一个抽象方法的匿名内部类。

代码实例如下:

public class Java8Tester {
	   @SuppressWarnings("unchecked")
	public static void main(String args[]){
		 
		   List<String> test=Arrays.asList("a","c","d","s");
		   //java8之前版本的集合排序
		   Collections.sort(test, new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				return Collator.getInstance().compare(o1, o2);
			}   
		});
		   System.out.println("Java8以前的版本"+test);   

		   // Lamada表达式的应用基础版(参数主体,方法主题提出) 
		 Collections.sort(test,(String o1, String o2)->{
			 return Collator.getInstance().compare(o1, o2);} );  
		 System.out.println("基础的Lamada表达式"+test); 
		 
		 // Lamada表达式的应用简化版(方法体中只有一行代码时,可以直接取出大括号和return关键字)
		 Collections.sort(test,(String o1, String o2)-> Collator.getInstance().compare(o1, o2));
		 System.out.println("简化版的Lamada表达式"+test); 
		 
		 // Lamada表达式的应用最简版(可以去除参数的类型,java8会自动推断参数类型)
		 Collections.sort(test,(o1, o2)-> Collator.getInstance().compare(o1, o2));
		 System.out.println("最简版的java8中lamada表达式:"+test); 
	   }
	}

猜你喜欢

转载自blog.csdn.net/weixin_42324471/article/details/80971447