方法引用(阿里云开发者社区学习笔记)

引用数据类型

引用数据类型最大的特点是可以进行内存的指向处理,但是在传统的开发之中一直所使用的只是对象引用此操作,而从JDK1.8之后也提供有方法的引用,即:不同的名称可以描述同一个方法。如果要进行方法的引用在Java里面提供有如下的四种形式:
‒ 引用静态方法:类名称::static方法名称
‒ 引用某个实例对象的方法:实例化对象::普通方法
‒ 引用特定类型的方法:特定类::普通方法
‒ 引用构造方法:类名称::new
引用静态方法

@FunctionalInterface
// P描述的是参数,R描述的是返回值
interface IFunction<P, R> {
    public R change(P p);
}
public class JavaDemo {
    public static void main(String args[]) {
        IFunction<Integer, String> fun = String::valueOf;
        String str = fun.change(100);
        System.out.println(str.length());
    }
}
//利用方法引用这一概念可以为一个方法定义多个名字,但是要求必须是函数式接口。

引用实例化对象中的方法
‒ 在String类里有一个转大写的方法:public String toUpperCase()
‒ 这个方法是必须在有实例化对现象提供的情况下才可以调用

@FunctionalInterface
// P描述的是参数,R描述的是返回值
interface IFunction<R> {
    public R upper();
}
public class JavaDemo {
    public static void main(String args[]) {
        IFunction<String> fun = "www.mldn.cn"::toUpperCase;
        System.out.println(fun.upper());
    }
}

引用指定类中的方法

@FunctionalInterface
// P描述的是参数,R描述的是返回值
interface IFunction<P> {
    public int compare(P p1,P p2);
}
public class JavaDemo {
    public static void main(String args[]) {
        IFunction<String> fun = String::compareTo;
        System.out.println(fun.compare("A","a"));
    }
}

引用构造方法

class Person{
private String name ;
private int age;
public Person(Stirng name,int age){
this.name = name;
this.age = age ;
}
public String toString(){
return "姓名" + this.name + "\t年龄" + this.age ;
}
}
@FunctionalInterface
interface IFunction<R> {
    public R create(String s,int a);
}
public class JavaDemo {
    public static void main(String args[]) {
        IFunction<Person> fun = Person::new;
        System.out.println(fun.create("张三",20));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值