摘要:在写java代码的时候遇到如下编译错误。本文分享自华为云社区《Java中出现No enclosing instance of type XXX is accessible问题》,作者:zhushy。错误代码及错误现象先记录下问题现象,在写java代码时遇到如下编译错误。无法访问类型FileTree的封闭实例。必须使用FileTree类型的封闭实例(例如x.newA(),其中x是FileTree的实例)来限定分配。代码如下:importjava.util.Arrays;导入java.util。链接哈希图;公共类FileTree{类节点{字符串名称;公共节点(字符串名称){超级();this.name=名称;}LinkedHashMapmap=newLinkedHashMap();}publicstaticvoidoutputThreeFormat(String[]in){Arrays.sort(in);节点根=新节点(“/”);}publicstaticvoidmain(String[]args){String[]in={"usr/local/lib64","GAMES","usr/DRIVERS","home","var/log/"};outputThreeFormat(in);}}错误截图如下:Howtofixtheseerrors错误的意思是没有可访问的Externalinstanceenclosinginstance。必须分配合适的外部类FileTree的实例(例如x.newA(),x必须是FileTree的实例。)结合错误码,很容易知道根本原因是什么:classNode是一个非静态内部类,publicstaticvoidoutputThreeFormat(String[]in)是一个静态方法。静态方法不能直接访问非静态类。可以将类Node定义为外部类,而不使用内部类,这样在FileTree类中,无论是静态方法还是非静态方法,都可以直接用newNode初始化一个节点。导入java.util.Arrays;导入java.util.LinkedHashMap;类节点{字符串名称;公共节点(字符串名称){超级();this.name=名称;}LinkedHashMapmap=newLinkedHashMap();}publicclassFileTree{publicstaticvoidoutputThreeFormat(String[]in){Arrays.sort(in);节点根=新节点(“/”);}publicstaticvoidmain(String[]args){String[]in={"usr/local/lib64","GAMES","usr/DRIVERS","home","var/log/"};outputThreeFormat(in);}}可以使用静态内部类ClassNode可以定义为静态内部类,即staticclassNode。导入java.util.Arrays;导入java.util.LinkedHashMap;公共类FileTree{静态类节点{字符串名称;公共节点(字符串名称){超级();this.name=名称;}LinkedHashMapmap=newLinkedHashMap();}publicstaticvoidoutputThreeFormat(String[]in){Arrays.sort(in);节点根=新节点(“/”);}publicstaticvoidmain(String[]args){String[]in={"usr/local/lib64","GAMES","usr/DRIVERS","home","var/log/"};outputThreeFormat(in);}}使用非静态内部类,使用外部类实例的调用如下所示。导入java.util.Arrays;导入java.util.LinkedHashMap;公共类FileTree{类节点{字符串名称;公共节点(字符串名称){超级();this.name=名称;}LinkedHashMapmap=newLinkedHashMap();}publicstaticvoidoutputThreeFormat(String[]in){Arrays.sort(in);文件树ft=new文件树();节点root=ft.newNode("/");}publicstaticvoidmain(String[]args){String[]in={"usr/local/lib64","GAMES","usr/DRIVERS","home","var/log/"};输出三格式(中);}}查询资料,深入学习参考网络资料深入学习?https://www.cnblogs.com/kungf...java中的静态类静态内部类和非静态内部类有什么区别静态内部类??以下是两者之间的主要区别。?(1)内部静态类不需要引用外部类。但是非静态内部类需要持有对外部类的引用。?(2)非静态内部类可以访问外部类的静态和非静态成员。静态类不能访问外部类的非静态成员。他只能访问外部类的静态成员。?(3)没有外部类的实体,不能创建非静态内部类。非静态内部类可以访问外部类的数据和方法,因为他在外部类中点击关注,第一时间了解华为云的新鲜技术~