Java学习提要——方法引用

来源:互联网 发布:熊猫安全软件 编辑:程序博客网 时间:2024/04/29 16:21

JDK1.8新特性

1.方法引用概念

方法引用就是为一个方法设置别名,相当于一个方法定义不同的名字
其四种形式:
引用静态方法:   类名称 :: static 方法名称
引用某个对象方法: 实例化对象 :: 普通方法
引用特定类型方法: 特定类 :: 普通方法
引用构造方法:   类名称 :: new
接口里面只需要存在一个方法!所以为了保证只有一个方法,那么在定义之前加上@FunctionalInterface

2.引入静态方法

引:在String类里面有一个valueOf()方法:public static String valueOf(int x);

@FunctionalInterface  //此函数式接口,使interface只能够定义一个方法interface IMessage<T,R> { //<T>引用方法的参数类型,<R>引用方法的返回类型    public R change(T t) ;}public class Nice {    public static void main(String args[]) {        //将String.valueOf()方法,变成了我现在这个方法        IMessage<Integer,String> msg = String :: valueOf;        String str = msg.change(100);        System.out.println(str.replaceAll("0","6"));//将字符串中的‘0’换成‘6’    }}

3.引入普通方法

引:String类里面的大写函数:String.toUpperCase()

interface IMessage <R> {    public R upper();}public class Nice {    public static void main( String args[] ) {        //这个方法没有参数,但是有返回值,并且这个方法一定要在有实例化对象的时候调用        IMessage<String> msg = "hello" :: toUpperCase ;//“hello”就是String类的实例化对象        String str = msg.upper();//相当于“"hello".toUpperCase()”        System.out.println(str);    }}

4.引入特定类型方法

这种引用需要特定类的对象支持,正常情况下“类 :: 方法”,引用的一定是类中的静态方法,但是这种形式也可以引用以下:
引:String类中有个比较方法:public int compareTo(String anotherString),此方法需要两个参数

interface IMessage <T> {    public int compare(T t1,T t2) ;}public class Nice {    public static void main( String args[] ) {        IMessage<String> msg = String :: compareTo ; //引用前不需要调用对象,而是可以理解为将对象定义在参数上        System.out.println(msg.compare("A","B"));    }}

5.引用构造方法

interface IMessage<C> {    public C create(String t,double p) ;}class Book {    private String title ;    private double price;    public Book(String title , double price) {        this.title = title ;        this.price = price ;    }    public String toString () {        return "bookname:" + this.title + ",bookprice:" + this.price ;    }}public class Nice {    public static void main(String args[]) {        IMessage<Book> msg = Book :: new ; //引用构造方法        //调用的虽然是create(),但是这个方法引用的是Book类的构造        Book book = msg.create("Java" , 69) ;        System.out.println(book);    }}

6.总概

对象的引用使用不同的名字,而方法引用是需要一个函数式接口,并且设置好参数,当然,JDK1.8现在可能还不太常用。

0 0
原创粉丝点击