方法引用

对于方法引用我一直没有弄懂,今天仔细的研究一下方法引用。
首先我们在最初学习java的时候在数组的时候我们有一个引用传递,那个传递是我们在定义函数的时候将数组作为参数进行传递这个时候传入的是它的地址。所以从最开始,我们的方法引用一直都是只对于引用数据类型(数组、类、接口)才有的。但是在JDK1.8开始追加了方法引用的概念,方法引用的本质就是别名的使用,将原来需要调用方法的名称改为另外的方法去引用方法。对于方法引用我们一共有四种形式:
(1)引用静态方法:类名称::static 方法名称
(2)引用某个对象的方法:实例化对象::普通方法
(3)引用某个特定类的方法:类名称::普通方法
(4)引用构造方法:类名称::new
1.引用静态方法
String类的valueOf方法

package www.bit.java.testdemo; 
@FunctionalInterface // 是一个函数式编程接口,只允许有一个方法 
interface IUtil<P,R> {    public R switchPara(P p) ; }
 
public class TestDemo {    
public static void main(String[] args) {        IUtil<Integer,String> iu = String :: valueOf ; //进行方法引用        
String str = iu.switchPara(1000) ; // 相当于调用了String.valueOf(1000) ,这个iu就相当于是别名        System.out.println(str.length()); 
}
}

2.引用对象方法
String中的toUpperCase()方法为对象方法

package www.bit.java.testdemo; 
@FunctionalInterface // 是一个函数式编程接口,只允许有一个方法 
interface IUtil<R> {    
public R switchPara() ; }
public class TestDemo {    
public static void main(String[] args) {        
IUtil<String> iu = "hello" :: toUpperCase ; // 进行方法引用        System.out.println(iu.switchPara()); // 转换的就是这个"hello" 
}
}

3.引用类中普通方法
String有一个compareTo方法,此方法为普通方法

package www.bit.java.testdemo; 
@FunctionalInterface // 是一个函数式编程接口,只允许有一个方法 
interface IUtil<R,P> {    
public R compare(P p1,P p2) ;   
} 
public class TestDemo {    
public static void main(String[] args) {        
IUtil<Integer,String> iu = String :: compareTo ;         System.out.println(iu.compare("刘", "霍"));
}
}

4.引用构造方法

package www.bit.java.testdemo;
 
class Person {    
private String name ;     
private int age ;    
public Person(String name, int age) {        
super();        
this.name = name;        
this.age = age;   
 }    
@Override    public String toString() {        
return "Person [name=" + name + ", age=" + age + "]"; 
}
}
@FunctionalInterface // 是一个函数式编程接口,只允许有一个方法 
interface IUtil<R,PN,PA> {    
public R createPerson(PN p1,PA p2) ;   
} 
public class TestDemo {    
public static void main(String[] args) {        IUtil<Person,String,Integer> iu = Person :: new;         System.out.println(iu.createPerson("yuisama", 25)); // 相当于调用Person类的构造方法    
} 
}

对于方法引用主要是在函数接口的时候用,因为函数接口只有一个方法,所以可以将它需要的方法通过方法引用重新起一个名字。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值