zoukankan      html  css  js  c++  java
  • 实际工程中加快 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()
    

    更多

    未完待续...

  • 相关阅读:
    当面对会反制遭破解装置的App该如何顺利提取数据
    管理信息系统的开发与管理
    加载静态文件,父模板的继承和扩展
    开始Flask项目
    夜间模式的开启与关闭,父模板的制作
    完成登录与注册页面的前端
    JavaScript 基础,登录验证
    CSS实例:图片导航块
    导航,头部,CSS基础
    web基础,用html元素制作web页面
  • 原文地址:https://www.cnblogs.com/apachecn/p/13443356.html
Copyright © 2011-2022 走看看