HttpHeaders createHeaders(String username, String password){
return new HttpHeaders() {{
String auth = username + ":" + password;
byte[] encodedAuth = Base64.encodeBase64(
auth.getBytes(Charset.forName("US-ASCII")) );
String authHeader = "Basic " + new String( encodedAuth );
set( "Authorization", authHeader );
}};
}
从论坛上看到这段代码,大致知道该方法的作用,但是 new HttpHeaders() 之后为啥这样写啊?看了HttpHeaders的构造函数有两个,一个无参,一个三参。不理解图中这种写法,望各位告知,谢谢
======================================分割线======================================
首先谢谢各位的回答,我搜了下关于代码块,构造代码块,静态代码块的相关知识。写了个测试代码,
public class Demo01 {
String name ;
public Demo01(String name){
System.out.println("构造函数");
this.name = name;
}
{
System.out.println("类中的构造代码块");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show(){
System.out.println(name);
}
public static void main(String[] args) {
Demo01 demo = new Demo01("11"){{
System.out.println("构造代码块???");
setName("22");
}};
demo.show();
}
}
执行结果如下:
问 :如果是构造代码块,执行时应该是先于构造函数,但打印结果却是最后执行,所以到底是不是构造代码块呢?如果不是,那这种写法就是普通代码块吗?