实际工程中加快 Java 代码编写的小提示
这里我简单谈谈 Java 语法在编程效率方面的弱势,以及如何补救。
一、集合的快速创建
C# 是少数拥有集合字面值(又叫初始化表达式)的静态语言之一。
var list = new List<int> {1, 2, 3};
var set = new HashSet<int> {1, 2, 3};
var map = new Dictionary<int, int> {{1, 2}, {2, 3}, {3, 4}};
在 Java 中如果想要达到相同效果,可以用List/Set/Map.of()工厂方法。如果是 Java 9 以下的版本,可以用 Guava 中的ImmuatableList/Set/Map.of():
List<Integer> list = ImmutableList.of(1, 2, 3);
Set<Integer> set = ImmutableSet.of(1, 2, 3);
Map<Integer, Integer> map = ImmutableMap.of(1, 2, 2, 3, 3, 4);
要注意它们是不可变的。如果要创建可变集合,可以将其再赋给集合构造器:
List<Integer> list = new ArrayList<>(ImmutableList.of(1, 2, 3));
读写器的快速创建
C# 拥有自动属性,可以自动创建默认行为的属性,和背后的字段:
public class User
{
public int Id {get; set;}
public string Username {get; set;}
public string Password {get; set;}
public string Phone {get; set;}
}
Java 特性不支持这样,但可以使用 Lombok 插件的@Data注解,来快速创建一个这样的数据类(类似 Kotlin 的 DataClass 特性):
@Data
public class User
{
private int id;
private String username;
private String password;
private String phone;
}
然后你就可以使用它们的读写器了:
User u = new User();
u.setId(1);
u.setUsername("wizard");
u.setPassword("xxxxxx");
u.setPhone("13xxxxxxxxx");
三、对象的快速创建
C# 再次支持对象字面值,它在背后调用相应构造器和属性:
var u = new User() {
Id=1,
Username="wizard",
Password="xxxxxx",
Phone="13xxxxxxxxx"
};
Java 这边,可以使用 Lombok 的@Builder注解:
@Data
@Builder
public class User
{
//...
}
然后:
User u = User.builder()
.id(1)
.username("wizard")
.password("xxxxxx")
.phone("13xxxxxxxxx")
.build()
更多
未完待续...
实际工程中加快 Java 代码编写的小提示的更多相关文章
- JSP中的Java代码和内置对象
一.JSP中的Java代码 (一)JSP页面中有三种方式嵌入java代码: 1.java的表达式 格式:<%= java表达式 %> 2.java的语句 格式:<% java语句&g ...
- Jmeter4.0---- jmeter中写入java代码_简单了解(15)
1.说明 BeanShell:是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型.命令.闭包等通用脚本 ...
- Myeclipse中把java代码导成UML类图
Myeclipse中把java代码导成UML类图 1.右键点击项目名称,选择New-------àUML2 Model 2.给类图命名 3.导成类图 1)如果要把整个项目导成类图,则把整个项目拖到类图 ...
- jsp页面中的java代码
jsp页面中的java代码 1.jsp表达式 <%= ....%> 只能放置一个变量常量 2. jsp小脚本 <% .... %> java语句,可以插入一些语句 3. ...
- JSP中嵌入java代码方式以及指令
JSP中嵌入java代码的三种方式: (1)声明变量或方法 : <%! 声明; %> :慎重使用,因为此方法定义的是全局变量 (2)java片段(scriptlet): <% j ...
- android中在java代码中设置Button按钮的背景颜色
android中在java代码中设置Button按钮的背景颜色 1.设置背景图片,图片来源于drawable: flightInfoPanel.setBackgroundDrawable(getRes ...
- MyEclipse中阿里JAVA代码规范插件(P3C)的安装及使用
JAVA代码规范插件(P3C)是阿里巴巴2017年10月14日在杭州云栖大会上首发的,使之前的阿里巴巴JAVA开发手册正式以插件形式公开走向业界.插件的相关信息及安装包都可以在GitHub(https ...
- eclipse中添加Java代码注释模板
eclipse中添加Java代码注释模板 1.Window->Preference->Java->Code Style->Code Template,进入注释编辑界面 2.文件 ...
- EL和 JSTL? 在JSP中简化 java代码的写法!
一.servlet部分 package com.aaa.servlet; import com.aaa.dao.IStudentDAO; import com.aaa.dao.Impl.Student ...
随机推荐
- C++ std-11 常用方法
对多个值取最值 C++标准库提供了获取最大值和最小值的方法: int mi = std::min(x1, x2); int ma = std::max(x1, x2); 如果想获取超过两个数的最值呢? ...
- 替代联阳IT6564方案|CS5262替代IT6564|设计DP转HDMI+VGA扩展坞方案
联阳IT6564:带嵌入式MCU的单芯片4通道DisplayPort1.2到HDMI2.0/VGA转换器 联阳IT6564是一种高性能的单芯片显示端口到HDMI和VGA转换器.IT6564FN结合Di ...
- 基于Spring MVC + Spring + MyBatis的【医院就诊挂号系统】
资源下载:https://download.csdn.net/download/weixin_44893902/21727306 一.语言和环境 1.实现语言: JAVA语言. 2.环境要求: MyE ...
- 利用自定义动画 animate() 方法,实现某图书网站中“近 7 日畅销榜”中的图书无缝垂直向上滚动特效:当光标移入到图书上时,停止滚动,鼠标移开时,继续滚动
查看本章节 查看作业目录 需求说明: 利用自定义动画 animate() 方法,实现某图书网站中"近 7 日畅销榜"中的图书无缝垂直向上滚动特效:当光标移入到图书上时,停止滚动,鼠 ...
- 中文字体css编码转换
各大网站的字体选择 网站 字体 腾讯 font: 12px "宋体","Arial Narrow",HELVETICA; 淘宝 font: 12px/1.5 t ...
- MongoDB_安装、配置、连接(五)
MongoDB 是跨平台的,既可以在 Linux系统下安装,也可以在Windows 系统.MacOS系统下安装,本节主要介绍如何在 Linux 系统下安装 MongoDB. windows安装:htt ...
- [Docker] 在CentOS6.8 安装 Docker
运行docker Linux内核版本需要在3.8以上,针对centos6.5 内核为2.6的系统需要先升级内核.不然会特别卡,退出容器. # 查看当前版本: cat /etc/issue # 导入pu ...
- spring boot & maven 多模块 ---心得
1.前言 有个名字叫 多模块企业级项目 ,其实就是一个父级maven工程里面有着多个子级maven工程的项目 ,甚至在子级maven 里面还有多个子级maven, 这用到了 maven多模块开发的使 ...
- vue组件中的.sync修饰符使用
在vue的组件通信props中,一般情况下,数据都是单向的,子组件不会更改父组件的值,那么vue提供.sync作为双向传递的关键字,实现了父组件的变动会传递给子组件,而子组件的carts改变时,通过事 ...
- Scrapy的Item_loader机制详解
一.ItemLoader与Item的区别 ItemLoader是负责数据的收集.处理.填充,item仅仅是承载了数据本身 数据的收集.处理.填充归功于item loader中两个重要组件: 输入处理i ...