Java奇技淫巧:new对象后加大括号{},最后顺便做了个小框架?

}

public void eat(){

System.out.println(name + " 吃饭!");

}

}

这是一个平平无奇的类,假如我们要弄个类继承Fu,然后重写eat方法,一般会这么写:

public class Zi extends Fu{

@Override

public void eat() {

System.out.println(“这是Zi类的eat方法!”);

}

}

这样做当然是可以的,但是会有这样的情况,就是我们希望有个类,仅仅重写了eat方法,而且很确定不会在别的地方再使用该子类了,就可以new一个匿名子类对象:

Fu f = new Fu(){

@Override

public void eat() {

System.out.println(“eat方法被重写了!”);

}

};

这样就可以省去多写一个类的麻烦。

步骤 2  匿名子类的构造器

先看一段代码

public static void main(String[] args) {

Fu f = new Fu(){

/** 这里再打一个打括号,就是在匿名子类的构造器中写东西 */

{

setName(“Zi”);

}

@Override

public void eat() {

/** this.getClass为匿名类*/

System.out.println(this.getClass());

System.out.println(this.getName() + " eating…");

}

};

f.eat();

}

这种写法也很奇特,但是真的有用!你可以在生成匿名子类对象的时候,把数据初始化一下。

步骤 3  实战应用1.给HashMap赋初值

Map<String,Object> study = new HashMap<String,Object>(){{

put(“name”,“java小白翻身”);

put(“url”,“java18.cn”);

}};

System.out.println(study);

这下是真的学到了,因为生成的对象还是Map(因为多态),所以不会有任何影响,赶紧拿去秀翻同事吧~~

步骤 4  实战应用2.给ArrayList赋初值

List list = new ArrayList(){{

add(1);

add(2);

add(3);

}};

System.out.println(list);

步骤 5  实战应用3.传参的时候直接new接口

这种情况是非常普遍的!

这种情况是非常普遍的!

这种情况是非常普遍的!

重要的话说三遍,如果你喜欢翻看源码,这种技巧真的是随处可见。比如:

//直接开启一个线程

new Thread(new Runnable() {

@Override

public void run() {

System.out.println(“线程开启!”);

}

}).start();

一般这种情况都是直接new接口,实际上是new一个接口的匿名实现类啦,不过我一般喜欢说new一个接口。

如果这个接口中只有一个抽象方法,就可以用lamda表达式:

new Thread(() -> {

System.out.println(“线程开启!”);

}).start();

步骤 6  神级展开: 我顺手做了个小框架?!

这部分内容是我突然想到的,既然这个匿名子类对象这么好用,我是不是可以用这个特性来做个SQL生成器?

最终做出来的效果是这样的:

String sql = new SQL(){{

select(“*”).from(“t_user”).where(“uname like ‘j%’”)

.and(“sex=‘男’”).orderby(“id desc”);

}}.toString();

System.out.println(sql);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

作为过来人,小编是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料


《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
作为过来人,小编是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料

[外链图片转存中…(img-RRI8t11D-1713292547528)]
[外链图片转存中…(img-OflLZiBa-1713292547528)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值