记录一个可以写骚代码的方式,{{ 双括号语法,没什么卵用
平时初始化某个对象的时候,经常要往里边设置很多值。现在可以借助这种骚方式直接在对象创建时加载好。换种初始化模式,换种心情 (雾
比如初始化一个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) 。( 只要不怕被打
