java8 新特性5 方法引用
方法 特性 引用 java8
2023-09-27 14:22:13 时间
一 方法引用
:: 该符号为引用运算符,而它所在的表达式被称为方法引用
二 案例实操
2.1 对象实例方法
引用对象的实例方法,其实就引用类中的成员方法
-
格式
对象::成员方法
1.接口
public interface Duixiang { public String toUpper(String str); }
2.定义一个转换大小写的类
public class Zhuan { public String toZhuan(String str){ return str.toUpperCase(); } }
3.测试结果:
public class TestDuixiang {
public static void main(String[] args) {
//lamda表达式
Duixiang duixiang=(x)->{return x.toUpperCase();};
String k= duixiang.toUpper("ssss");
System.out.println("k:"+k);
//实例2
Zhuan z=new Zhuan();
Duixiang duixiang1=z::toZhuan;
String t=duixiang1.toUpper("abcdd");
System.out.println("t:"+t);
}
}
2.2 类方法
1.接口
public interface H { public int H(String x); }
2.调用
public class TestLei {
public static void main(String[] args) {
H m=(x)->{return Integer.parseInt(x); };
int n=m.H("5");
System.out.println("n:"+n);
//方式2
H h= Integer::parseInt;
int k= h.H("5");
System.out.println("k:"+k);
}
}
3.调用结果
2.3 类-实例方法
引用类的实例方法,其实就是引用类中的成员方法
格式
类名::成员方法
1接口
public interface LeiMethod { public String getSubString(String str,int x,int y); }
2.调用类
public class TestLeiMethod {
public static void main(String[] args) {
//方式1
LeiMethod lm=(String x,int m,int n)->{return x.substring(m,n);};
String s=lm.getSubString("qwertrrereeew",0,4);
//
String ss=get("qwertrrereeew",String::substring);
System.out.println("ss:"+ss);
}
public static String get(String str,LeiMethod lm){
return lm.getSubString(str,0,4);
}
}
3.结果
2.4 构造器的使用
引用构造器,其实就是引用构造方法
-
l格式
类名::new
1.接口
public interface Gou { public Teacher getTeacher(String name,int age); }
2.调用
package diaoyong;
/**
* @ClassName: TestTeacher
* @Description: TODO
* @Author: liujianfu
* @Date: 2022/11/06 16:59:51
* @Version: V1.0
**/
public class TestTeacher {
public static void main(String[] args) {
Gou g=(String name,int age)->{return new Teacher(name,age);};
Teacher t= g.getTeacher("asdfas",45);
System.out.println("name:"+t.getName()+" age"+t.getAge());
//方式2
Teacher tt= get(Teacher::new);
System.out.println("name:"+tt.getName()+" age"+tt.getAge());
//方式3
Gou gg=Teacher::new;
Teacher c= gg.getTeacher("adfa",456);
System.out.println("name:"+c.getName()+" age"+c.getAge());
}
public static Teacher get(Gou g){
Teacher t= g.getTeacher("ass",40);
return t;
}
}
3.结果
相关文章
- 类的特性讲解:封装-私有属性-成员属性-公有属性-公有的方法变成私有的方法-析构方法
- Java8新特性Lambda表达式&Stream流&方法引用最全集锦
- 常用知识表示方法
- 考虑充电负荷空间可调度特性的分布式电源与电动汽车充电站联合配置方法(Matlab代码实现)
- 计及光伏电站快速无功响应特性的分布式电源优化配置方法(Matlab代码实现)
- SSE图像算法优化系列十六:经典USM锐化中的分支判断语句SSE实现的几种方法尝试。
- java8 新特性2-接口中的默认方法和静态方法
- 关于Python的学习方法和技巧有哪些
- Java8新特性(三)——Optional类、接口方法与新时间日期API
- 《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一1.3 filter、map和flatMap方法
- 04-vi使用方法详细介绍
- win7升级win10激活指南——查看预装Win7/8/8.1电脑内置系统激活密钥(OEM Key)方法
- 修改抓包端口的方法
- 学习Cocos2d-x Lua:解析Lua中的_index元方法以及_newindex元方法
- 云服务器Windows 2012 IIS添加站点绑定域名的方法?
- 网络安装Centos的方法
- FCKeditor.net上传图片提示“没有权限”的解决方法
- 如何学好VC和MFC(各前辈学习方法及感受整理)(五)
- Javascript中类式继承和原型式继承的实现方法和区别
- 【Java基础系列】创建一个类的实例有哪些方法