Jackson 注解

https://blog.csdn.net/JokerLJG/article/details/128573849


@JsonUnwrapped?用于指示在序列化或反序列化過程中展開(unwrapped)包裝的屬性。

當一個類中包含了另一個類的對象作為屬性,并且希望在序列化或反序列化時將該屬性的字段直接展開到父類中,而不是嵌套在一個額外的對象中

如:

public?class Person {

? ? private String name;

? ? @JsonUnwrapped? ?

private Address address;

? ? // 省略構造函數(shù)、getter 和 setter 方法

}

public class Address {

? ? private String street;

? ? private String city;

? ? // 省略構造函數(shù)、getter 和 setter 方法

}

-----------------------------------------------------------

{ "name": "John", "street": "123 Main St", "city": "New York"}




內部類是定義在另一個類內部的類。內部類可以訪問其外部類的成員,并且可以提供更好的封裝和組織代碼的方式。以下是Java中定義內部類的幾種方式:

成員內部類(Member Inner Class):

成員內部類是定義在另一個類的內部的普通類。它可以訪問外部類的成員變量和方法,包括私有成員。成員內部類的定義通常在外部類的成員位置,可以使用訪問修飾符(public、private、protected)來控制其訪問權限。

-----這一實現(xiàn)是通過在創(chuàng)建內部類實例時秘密捕獲一個外部類實例的引用完成的。也就是說,一個內部類在實例化時必定需要依賴一個外部類的實例,所以內部類不可單獨實例化存在。

OuterClass outer = new OuterClass();?// 創(chuàng)建外部類的實例

OuterClass.InnerClass inner = outer.new InnerClass();?// 使用外部類的實例來創(chuàng)建內部類的實例

public class OuterClass {

? ? // 外部類的成員變量和方法? ??

public class InnerClass {

? ? ? ? // 內部類的成員變量和方法? ? }

}

靜態(tài)內部類(Static Inner Class):?https://blog.51cto.com/u_16099249/7750328

靜態(tài)內部類是使用?static?關鍵字定義的內部類。它與外部類的實例無關,可以直接訪問外部類的靜態(tài)成員,但不能直接訪問外部類的非靜態(tài)成員。靜態(tài)內部類的定義通常在外部類的成員位置,可以使用訪問修飾符來控制其訪問權限。

OuterClass.InnerClass instance = new OuterClass.InnerClass();

public class OuterClass {

? ? // 外部類的成員變量和方法? ?

public static class InnerClass {

? ? ? ? // 內部類的成員變量和方法? ? }

}

方法內部類(Method Local Inner Class):

方法內部類是定義在方法內部的類。它只在所屬方法的作用域內可見,不能使用訪問修飾符修飾。方法內部類可以訪問所在方法的參數(shù)和局部變量,但這些變量必須聲明為?final?或是事實上的?final?變量(Java 8+)。

public class OuterClass {

? ? public void someMethod() {

? ? ? ? // 方法內部類定義在方法內部? ? ? ??

?????????class InnerClass {

? ? ? ? ? ? // 內部類的成員變量和方法? ? ? ? }

? ? }

}

匿名內部類(Anonymous Inner Class):

匿名內部類是沒有顯式定義類名的內部類,它通常用作接口的實現(xiàn)或抽象類的子類。匿名內部類沒有構造方法,它的定義和實例化通常在同一處完成。

public class OuterClass {

? ? public void someMethod() {

? ? ? ? // 匿名內部類實現(xiàn)了接口? ? ? ? SomeInterface obj = new SomeInterface() {

? ? ? ? ? ? // 內部類的實現(xiàn)代碼? ? ? ? };

? ? }

}

這些是Java中定義內部類的幾種常見方式。每種方式都有其特定的用途和限制。根據(jù)需求選擇適合的內部類類型來組織和封裝代碼。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容