前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用反射、Lambda、Stream流、Map结合Funcation简化代码

利用反射、Lambda、Stream流、Map结合Funcation简化代码

原创
作者头像
深雾
修改2021-07-27 14:32:01
7640
修改2021-07-27 14:32:01
举报
文章被收录于专栏:工具类工具类

# 前言

简洁的代码,看着会让人舒服不少,相信不少同学也体验过看别人代码的痛苦,我们更要注重自身的代码优化,下面几种技术在写代码中使用可以有很多灵活的运用。

# Lambda表达式

不用写匿名内部类可以快速调用匿名方法,比如多线程的启动

```java

Thread t1 = new Thread(()-> System.out.println("线程启动"));

t1.start();

```

接收参数,直接运行方法结果,也能有返回值

```java

(a, b) -> a - b;

(int a, int b) -> { return a * b; };

```

也能快速循环遍历,str就是list集合存的数据

```java

list.forEach((str) -> System.out.println(str));

```

anyMatch循环方法,当返回true时跳出循环

# Stream流

Stream代表来自源对象的序列,对元素集合进行操作,可以对数据进行筛选、排序、匹配、收集等操作,直接看代码

```java

List<String> strList = Arrays.asList("hello", "2020 end", "lis", "2021 Happy", "color");

List<String> list = strList.stream()

.filter(s -> s.startsWith("2"))

.map(String::toUpperCase)

.sorted()

.collect(Collectors.toList());

```

下图看实际效果:

对集合进行了过滤、转大写、排序操作

# 反射函数名称执行函数

因为公司代码有机器审核,单个方法代码行数,if、else if、switch case、for个数都有限制,所以根据以往经验,想出传函数名称执行函数

应用场景1:以前公司是做游戏,游戏活动条件验证、奖励列表等都是函数列表,比如{{"level",1}}需要验证等级方法大于1;{{"level",VIP0},{"vip",3}}等级方法验证大于10,vip验证大于3级,奖励方法同理{货币,物品,任务,特殊}

应用场景2:根据数据不用状态执行不同函数

## 应用

自己调试完成后还有些瑕疵,后面发现有现成工具类MethodUtils,就直接封装它的方法了

```java

/**

* @param object 实例化对象

* @param methodName 需要执行的函数名

* @param args 参数列表

* @throws Exception

*/

public static void invoke(Object object, String methodName, Object... args) throws Exception {

MethodUtils.invokeMethod(object, methodName, args);

}

```

效果图:

# Map结合Funcation

map存操作值和函数方法

当触发事件时,调用一次函数

但个人觉得不如反射简洁

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档