那代码调用的是静态属性的header 数据初始化在静态代码块中的header 两个header怎么拿值呢
时间: 2024-02-28 09:53:15 浏览: 18
在这段代码中,静态属性 `headers` 和静态代码块中创建的 `headers` 对象是不同的对象,但它们都保存在同一个类中,因此可以通过类名直接访问这两个对象。
具体来说,静态属性 `headers` 可以通过类名 `HttpClientUtil.headers` 直接访问,而静态代码块中创建的 `headers` 对象无法直接访问,但可以通过静态方法访问。例如,可以在类中添加一个静态方法 `getHeaders()`,该方法返回静态代码块中创建的 `headers` 对象,然后在其他方法中调用 `getHeaders()` 方法来获取该对象。
示例代码如下:
```java
public class HttpClientUtil {
private static Map<String, String> headers = Maps.newHashMap();
static {
Map<String, String> headers = Maps.newHashMap();
headers.put("Authorization", "APPCODE a96c97b0519f49538a3e8446ff598fa4");
HttpClientUtil.headers = headers;
}
public static Map<String, String> getHeaders() {
return headers;
}
public static void main(String[] args) {
// 直接访问静态属性 headers
Map<String, String> headers1 = HttpClientUtil.headers;
System.out.println(headers1);
// 通过静态方法 getHeaders() 访问静态代码块中的 headers
Map<String, String> headers2 = HttpClientUtil.getHeaders();
System.out.println(headers2);
}
}
```
输出结果为:
```
{Authorization=APPCODE a96c97b0519f49538a3e8446ff598fa4}
{Authorization=APPCODE a96c97b0519f49538a3e8446ff598fa4}
```
可以看到,直接访问静态属性 `headers` 和通过静态方法 `getHeaders()` 访问静态代码块中的 `headers`,都可以获取到相同的 `Map` 对象。