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ù)需求選擇適合的內部類類型來組織和封裝代碼。