这里我简单谈谈 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 代码编写的小提示的更多相关文章

  1. JSP中的Java代码和内置对象

    一.JSP中的Java代码 (一)JSP页面中有三种方式嵌入java代码: 1.java的表达式 格式:<%= java表达式 %> 2.java的语句 格式:<% java语句&g ...

  2. Jmeter4.0---- jmeter中写入java代码_简单了解(15)

    1.说明 BeanShell:是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的的松散类型.命令.闭包等通用脚本 ...

  3. Myeclipse中把java代码导成UML类图

    Myeclipse中把java代码导成UML类图 1.右键点击项目名称,选择New-------àUML2 Model 2.给类图命名 3.导成类图 1)如果要把整个项目导成类图,则把整个项目拖到类图 ...

  4. jsp页面中的java代码

    jsp页面中的java代码 1.jsp表达式  <%= ....%>  只能放置一个变量常量 2. jsp小脚本 <% .... %>  java语句,可以插入一些语句 3. ...

  5. JSP中嵌入java代码方式以及指令

    JSP中嵌入java代码的三种方式: (1)声明变量或方法 :  <%! 声明; %> :慎重使用,因为此方法定义的是全局变量 (2)java片段(scriptlet):  <% j ...

  6. android中在java代码中设置Button按钮的背景颜色

    android中在java代码中设置Button按钮的背景颜色 1.设置背景图片,图片来源于drawable: flightInfoPanel.setBackgroundDrawable(getRes ...

  7. MyEclipse中阿里JAVA代码规范插件(P3C)的安装及使用

    JAVA代码规范插件(P3C)是阿里巴巴2017年10月14日在杭州云栖大会上首发的,使之前的阿里巴巴JAVA开发手册正式以插件形式公开走向业界.插件的相关信息及安装包都可以在GitHub(https ...

  8. eclipse中添加Java代码注释模板

    eclipse中添加Java代码注释模板 1.Window->Preference->Java->Code Style->Code Template,进入注释编辑界面 2.文件 ...

  9. EL和 JSTL? 在JSP中简化 java代码的写法!

    一.servlet部分 package com.aaa.servlet; import com.aaa.dao.IStudentDAO; import com.aaa.dao.Impl.Student ...

随机推荐

  1. 移动端H5-iPhone安全距离适配

    安全区域? 安全区域指的是一个可视窗口范围,处于安全区域的内容不受圆角(corners).齐刘海(sensor housing).小黑条(Home Indicator)影响,如下图蓝色区域: 也就是说 ...

  2. Feature Distillation With Guided Adversarial Contrastive Learning

    目录 概 主要内容 reweight 拟合概率 实验的细节 疑问 Bai T., Chen J., Zhao J., Wen B., Jiang X., Kot A. Feature Distilla ...

  3. <学习opencv>过滤器和卷积

    /*=========================================================================*/ // 过滤器和卷积 /*========== ...

  4. Android物联网应用程序开发(智慧城市)—— 摄像头监控界面开发

    效果: 布局代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns: ...

  5. 编写Java程序,将一个int型数组拼接成字符串

    返回本章节 返回作业目录 需求说明: 将一个int数组中的元素拼接成int元素以逗号分隔字符串. 实现思路: 定义一个数组变量int[] arrs = {12,21,33,9,2}. 定义一个方法ar ...

  6. Xstart远程连接Linux图形用户界面

    目标: 在自己的Windows桌面打开Linux的firefox浏览器 工具: Windows: Xmanager的Xstart工具 Linux: xterm,firefox 说明: 使用Xstart ...

  7. python日志按天分割,保存近一个月日志,日志自动清理

    python日志按天分割,保存近一个月日志 import os import logging import re from logging.handlers import TimedRotatingF ...

  8. JMeter_事务控制器

    性能测试的结果统计时我们一定会关注TPS,TPS代表的是每秒事务数,每个事务对应的是我们的请求.虽然JMeter能够帮我们把每个请求统计成一个事务,但有时候我们希望把多个操作统计成一个事务,JMete ...

  9. @RestController和@Controller的关系

    @RestController注解,相当于@Controller+@ResponseBody两个注解的结合

  10. PPT文档学习小练习链接

    1. <初识PPT2010> https://www.toutiao.com/i6486689592241029645/ 2. <PowerPoint2010实现折线图动态展示> ...