解決Java變異出現(xiàn)錯(cuò)誤No enclosing instance of type XXX is accessible
一、錯(cuò)誤代碼和錯(cuò)誤現(xiàn)象
先記錄下問(wèn)題現(xiàn)象,寫java代碼時(shí)遇到下面的編譯錯(cuò)誤。
No enclosing instance of type FileTree is accessible. Must qualify the allocation with an enclosing instance of type FileTree (e.g. x.new A() where x is an instance of FileTree).
代碼如下:
import java.util.Arrays; import java.util.LinkedHashMap; public class FileTree { class Node { String name; public Node(String name) { super(); this.name = name; } LinkedHashMap<String, Node> map = new LinkedHashMap<String, Node>(); } public static void outputThreeFormat(String[] in) { Arrays.sort(in); Node root = new Node("/"); } public static void main(String[] args) { String[] in = { "usr/local/lib64", "GAMES", "usr/DRIVERS", "home", "var/log/" }; outputThreeFormat(in); } }
錯(cuò)誤截圖如下:
二、如何解決這些錯(cuò)誤
錯(cuò)誤的含義是,沒(méi)有可以訪問(wèn)的外部實(shí)例enclosing instance
。必須分配一個(gè)合適的外部類FileTree
的實(shí)例(如x.new A(),x必須是FileTree
的實(shí)例。)
結(jié)合出錯(cuò)的代碼,很容易知道根源是什么:
class Node
是非靜態(tài)內(nèi)部類- 而
public static void outputThreeFormat(String[] in)
是靜態(tài)方法 - 靜態(tài)方法是不能直接訪問(wèn)非靜態(tài)類的。
1、可以不使用內(nèi)部類
可以把class Node
作為外部類定義,這樣在FileTree類中不管是靜態(tài)還是非靜態(tài)方法都可以直接new Node初始化個(gè)節(jié)點(diǎn)。
import java.util.Arrays; import java.util.LinkedHashMap; class Node { String name; public Node(String name) { super(); this.name = name; } LinkedHashMap<String, Node> map = new LinkedHashMap<String, Node>(); } public class FileTree { public static void outputThreeFormat(String[] in) { Arrays.sort(in); Node root = new Node("/"); } public static void main(String[] args) { String[] in = { "usr/local/lib64", "GAMES", "usr/DRIVERS", "home", "var/log/" }; outputThreeFormat(in); } }
2、可以使用靜態(tài)內(nèi)部類
可以把class Node
作為靜態(tài)內(nèi)部類定義,即static class Node
。
import java.util.Arrays; import java.util.LinkedHashMap; public class FileTree { static class Node { String name; public Node(String name) { super(); this.name = name; } LinkedHashMap<String, Node> map = new LinkedHashMap<String, Node>(); } public static void outputThreeFormat(String[] in) { Arrays.sort(in); Node root = new Node("/"); } public static void main(String[] args) { String[] in = { "usr/local/lib64", "GAMES", "usr/DRIVERS", "home", "var/log/" }; outputThreeFormat(in); } }
3、使用非靜態(tài)內(nèi)部類時(shí),使用外部類的實(shí)例進(jìn)行調(diào)用
如下所示:
import java.util.Arrays; import java.util.LinkedHashMap; public class FileTree { class Node { String name; public Node(String name) { super(); this.name = name; } LinkedHashMap<String, Node> map = new LinkedHashMap<String, Node>(); } public static void outputThreeFormat(String[] in) { Arrays.sort(in); FileTree ft=new FileTree(); Node root = ft.new Node("/"); } public static void main(String[] args) { String[] in = { "usr/local/lib64", "GAMES", "usr/DRIVERS", "home", "var/log/" }; outputThreeFormat(in); } }
到此這篇關(guān)于解決Java變異出現(xiàn)錯(cuò)誤No enclosing instance of type XXX is accessible
的文章就介紹到這了,更多相關(guān)解決Java錯(cuò)誤No enclosing instance of type XXX is accessible
內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot定時(shí)任務(wù)@Scheduled執(zhí)行多次的問(wèn)題
這篇文章主要介紹了springboot定時(shí)任務(wù)@Scheduled執(zhí)行多次問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10Redis緩存,泛型集合與json字符串的相互轉(zhuǎn)換實(shí)例
這篇文章主要介紹了Redis緩存,泛型集合與json字符串的相互轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07集群環(huán)境中使用ehcache_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了集群環(huán)境中使用ehcache的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08詳解使用IntelliJ IDEA新建Java Web后端resfulAPI模板
這篇文章主要介紹了詳解使用IntelliJ IDEA新建Java Web后端resfulAPI模板,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08Spring boot + LayIM + t-io 實(shí)現(xiàn)文件上傳、 監(jiān)聽(tīng)用戶狀態(tài)的實(shí)例代碼
這篇文章主要介紹了Spring boot + LayIM + t-io 實(shí)現(xiàn)文件上傳、 監(jiān)聽(tīng)用戶狀態(tài)的實(shí)例代碼,需要的朋友可以參考下2017-12-12springboot集成nacos報(bào)錯(cuò):get data from Nacos
這篇文章給大家介紹了springboot集成nacos報(bào)錯(cuò):get data from Nacos error,dataId:null.yaml的原因及解決方法,如果又遇到相同問(wèn)題的朋友可以參考閱讀本文2023-10-10