记录一个可以写骚代码的方式,{{ 双括号语法,没什么卵用
平时初始化某个对象的时候,经常要往里边设置很多值。现在可以借助这种骚方式直接在对象创建时加载好。换种初始化模式,换种心情 (雾
比如初始化一个List,可以写成这样。
List list = new ArrayList(){{
    add("1");
    add("a");
    add("666a");
}};
System.out.println(list);//[1, a, 666a]
效果和这种是一样的
List list = new ArrayList();
list.add("1");
list.add("a");
list.add("666a");
System.out.println(list);//[1, a, 666a]
 
其实这效果指不定还好看一点点。
比如有个普通的实体类Person:
package com.skypyb;
public class Person {
    private String name;
    private Integer age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
 
我可以使用这种 {{ 双括号形式方便的初始化值。
Person person = new Person(){{
    setAge(18);
    setName("laowang");
}};
System.out.println(person);//Person{name='laowang', age=18}
 
第一层括弧 实际是定义了一个内部匿名类 ,第二层括弧 实际上是一个实例初始化块 (instance initializer block),这个块在内部匿名类构造时被执行。实例初始化块中可以使用其容器范围内的所有方法及变量,而且实例初始化块是在构造器之前运行的。
 
咳咳,在写代码的时候写点这种骚东西还是挺有意思的。return a + b 也可以写成 return a – (-b) 。( 只要不怕被打
