---
# System prepended metadata

title: Java 新手日常踩坑總集 - 學習J筆記
tags: [學習計畫, web server, JAVA, Android]

---

# Java 新手日常踩坑總集 - 學習J筆記
在開發的時候難免會遇到一些小坑，但是又不想要去記得太多繁瑣的背景故事，所以打算記錄一篇總集篇，每個小問題都不會占用到太多篇幅，還可以當作寫筆記的動力(長篇筆記寫起來真的很累，動輒 30min-90min XDD

## SpringBoot web server 接不到 request
最近在開發 SpringBoot web server 有遇到我打了 request 進來，Body 裡面帶了四個資料，但是只接到三個。
後來發現想要很確定能夠接到完整 Json 格式的資料的話，原先的建構要稍做修改(意味著其實不做修改也可能可以運作正常)

這是通常原本的 RequestBody 建構模式：
```java=
public class body{
    private String a;
    private String b;
    public body(){
        //建構子
    }
    
    public setA(String a){
        this.a = a;
    }
    public setB(String b){
        this.b = b;
    }
    public getA(){
        return this.a;
    }
    public getB(){
        return this.b;
    }
}
```
只要多加註解如下即可：
```java=
public class body{
    @JsonProperty(value = "a")
    private String a;
    @JsonProperty(value = "b")
    private String b;
    public body(){
        //建構子
    }
    
    public setA(String a){
        this.a = a;
    }
    public setB(String b){
        this.b = b;
    }
    public getA(){
        return this.a;
    }
    public getB(){
        return this.b;
    }
}
```
## Android Activity method use on Fragment
所有在 Activity 可以用的 method 到 Fragment 就變成 Can not be resolved，在方法前面 getActivity()就好

In Activity
```java=
WindowManager windowManager = getWindowManager();
```
In Fragment
```java=
WindowManager windowManager = getActivity().getWindowManager();
```
但是在 gradle 5.0 版本之後，他會開始"誠摯的希望(用warning強迫)"開發者改為使用 requireActivity()
可以看一下他的細節
> Return the FragmentActivity this fragment is currently associated with. May return null if the fragment is associated with a Context instead

使用 getActivity() 是有可能會因為生命週期規劃的不好而返回 Null 的，為了要避免返回 null 的狀況，Android 27.0.1 新增了 requireActivity() 這個 @NonNull 的方法，雖然現在 getActivity() 沒有被官方直接~~DISS~~，但是 requireActivity() 這麼香為何不用呢?

###### tags: `JAVA` `學習計畫` `web server` `Android`