【java拾遺】內部類實例化is not an enclosing class

概念

內部類 ( inner class ) : 定義在另一個類中的類。

詳見:https://juejin.im/post/5a903ef96fb9a063435ef0c8

用法

(1)非static內部類

有時候我們在開發的過程中組裝數據的時候不想一個返回數據創建多個類,就需要用到內部類進行組裝:如下:

@Data
public class GetCityVo {
    private int code;
    private CityDate data;

    @Data
    public class CityDate{
        private String province;
        private String city;
        private String sp;

    }
}

要實例化GetCityVo類的內部類CityDate

錯誤實例化方法:

 GetCityVo.CityDate cityDate = new GetCityVo.CityDate();

報錯:

 正確寫法(非static的內部類實例化,需要先new外部類再new內部類):

GetCityVo getZoneResult = new GetCityVo();
GetCityVo.CityDate cityDate = getZoneResult.new CityDate();

//或者
GetCityVo getZoneResult = new GetCityVo().new CityDate() ;

(2)static內部類

@Data
public class GetCityVo {
    public int code;
    public CityDate data;

    @Data
    public static class CityDate{
        private String province;
        private String city;
        private String sp;

    }
}

 實例化(靜態內部類與普通內部類的區別在於,靜態內部類的對象是不指向與某個具體的外部類對象,所以在創建對象時不需要創建外部類對象。直接實例化內部類對象),如下:

GetCityVo.CityDate cityDate = new GetCityVo.CityDate();
cityDate.setCity("北京");

彩蛋時間

馬上就到2020年了,新的一年祝大家萬事如意,順便問一下有沒有好心人給我介紹對象(熊貓頭表情包)

開機,帶薪撩妹(熊貓頭表情包) 

發佈了240 篇原創文章 · 獲贊 370 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章