java转圈加载_在Java 中云里雾里转圈圈 ?范型 构造枚举

晕晕的过程

最近从写SQL转战写Java了(姑且这么说,因为不写线上业务,其实还是写的很low的代码)。

上来的难点就是看着同事们的代码云里雾里,对我来说有几个难点:

范型的使用

同事代码的有基础的公共包,里边用到了大量的范型,具体的抽象层面的思想其实我是可以看得懂的,但是在具体实际的应用时还是有些懵,

如:一个接口声明成 interface A{},可是为啥子类implements的时候变成了class B implements A>{}

?这又是啥鬼。。。

枚举的使用

在之前我对枚举的使用仅限于enum A{INFO1,INFO2}的层面,以为能用它罗列几个值就可以了。当看到

public enum config implements A> {

INFO1(Sring.class),

INFO2(Integer.class);

config(String info);

config(Integer info)

}

这种带多个构造函数的枚举使用,且枚举的成员不只是一个简单的值类型之后,彻底对以前说自己熟练掌握Java的说法感叹虚啊。

lambda表达式

其实本质上是函数式编程,思想不难理解,可是当看到代码里一堆 "->"的Consumer类型表达时,彻底崩了,因为这样写真的不好理解代码呀,不如写个匿名类的形式来的直接。抱怨归抱怨,还是要学的。看了Consumer和几个常见的容器类,从Iterable、Collection、List、Map、ArrayList、Collector一层层看,再根据代码中使用了Stream的例子,看Consumer怎么在类里传递的,算是理解了一点点。

Stream的使用

同事代码中Stream真的是用的各种纯熟,再配上lambda表达式确实溜到飞起,Array、List、Map转换自如,再配上里边的reduce方法,适合做一些从数据的转换操作,举个例子:

public void compute(List listPerfs) {

listPerfs.stream().map(obj -> obj.getPv()).reduce(0L, (a, b) -> a + b);

}

这个代码的功能就是实现listPerfs中对象Pv成员变量的累加操作,确实代码比循环简洁了很多,可是要看懂对于生手真的不容易,只能跑去看reduce函数的介绍

897b887fabea

Stream中reduce的注释.png

其中的accumulator参数是个BinaryOperator,在这个例子里就是加法了。

后记

修炼了2年SQL之后,回头来学Java虽然觉得吃力,但是觉得踏实了些,SQL会继续写,Java一起跟进!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值