static inner class和非static inner class的例項化問題(can only instantiate non-static inner class...)
參考:https://blog.csdn.net/inter18099/article/details/8017117
前言:過年回來,專案突然報錯:can only instantiate non-static inner class...
程式碼如下:
/**
* @author fandong
* @create 2018/12/10
*/
@Data
public class QuestionnaireAttribute {
public QuestionnaireAttribute() {
}
@Data
public class StartAndEndTime{
private String startTime;
private String endTime;
}
}
Spring Boot 接收到Json引數後,無法構造 StartAndEndTime類的例項,過了個年,第一天上班頭暈呼呼的,一時有點懵。
原因:後來想想,其實是序列化框架 無法構造 非靜態內部類 StartAndEndTime的例項,加個 static 將其宣告為 靜態內部類就可以了。
這裡不得不說下 static inner class 和 non-static inner class 構造例項的區別:
static inner class 可以直接呼叫構造器構造,如下:
QuestionnaireAttribute.StartAndEndTime startAndEndTime = new QuestionnaireAttribute.StartAndEndTime();
non-static inner class 需要持有外部類例項的引用,所以無法直接呼叫構造器建立,需要先構造外部類例項,然後通過外部類例項呼叫構造方法建立,如下:
QuestionnaireAttribute questionnaireAttribute = new QuestionnaireAttribute();
QuestionnaireAttribute.StartAndEndTime startAndEndTime = questionnaireAttribute.new StartAndEndTime();
日常使用的話一般 static inner class比較多,所以一時遇到 non-static inner class的例項化會有點懵,?
相關文章
- 28、Static Nested Class 和 Inner Class的不同。
- self::class和static::class的區別
- elasticsearch之警惕inner hits的效能問題Elasticsearch
- Inner join 寫法
- @Inner使用及原理
- php class中public,private,protected,static的區別,以及例項PHP
- LINUX inner-process communicationLinux
- PostgreSQL/GreenPlum Merge Inner Join解密SQL解密
- mysql left join轉inner joinMySql
- Inner Join, Left Outer Join和Association的區別
- MySQL LEFT JOIN/ INNER JOIN/RIGHT JOINMySql
- mysql的left join和inner join的效率對比,以及如何優化MySql優化
- SAP ABAP CDS view 裡 INNER JOIN 和 Association 的區別View
- 深入理解Swift中static和class關鍵字Swift
- Java | 靜態巢狀類(Static Nested Class)Java巢狀
- join、inner join、left join、right join、outer join的區別
- An error occurred while updating the entries. See the inner exception for details.ErrorWhileExceptionAI
- Non-static method 'save(java.long.Object)' cannot be referenced from a static context.JavaObjectContext
- mysql中的left join、right join 、inner join的詳細用法MySql
- sql的left join 、right join 、inner join之間的區別SQL
- Non-static method Redis::hSet () cannot be called staticallyRedis
- 適配Android P(9.0)的問題 (百度地圖)HttpClient: Catch connection exception, INNER_ERRORAndroid地圖HTTPclientExceptionError
- Java獲取Class物件的方式和例項化物件的方式Java物件
- PHP static 關鍵字和 self 關鍵字例項化的區別PHP
- java class例項代表哪些結構Java
- Android bugs——NoSuchFieldError: No static field btn_press3 of type I in class Lcom/hyphenate/helpdesAndroidErrorS3
- class 類 this指向的問題
- 例項分析JAVA CLASS的檔案結構Java
- 說說iOS中的常用的關鍵字static ,class(僅限Swift關鍵字)iOSSwift
- PHP審計之class_exists與任意例項化漏洞PHP
- Typescript的interface、class和abstract classTypeScript
- C++中單例模式和static的對比C++單例模式
- sonar程式碼質量檢測告警“static“ base class members should not be accessed via derived types
- C++ VS單例模式報 錯誤 LNK2001 無法解析的外部符號 private: static class SingletonPattern錯誤C++單例模式符號
- Java Class檔案結構例項分析(下)Java
- Java Class檔案結構例項分析(上)Java
- iOS[super class]和[self class]iOS
- 【爬坑日記】.class.class選擇器的選擇問題