Python 官方文档:入门教程 => 点击学习
目录一、错误代码和错误现象二、如何解决这些错误1、可以不使用内部类2、可以使用静态内部类3、使用非静态内部类时,使用外部类的实例进行调用一、错误代码和错误现象 先记录下问题现象,写j
先记录下问题现象,写java代码时遇到下面的编译错误。
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);
}
}
错误截图如下:
错误的含义是,没有可以访问的外部实例enclosing instance
。必须分配一个合适的外部类FileTree
的实例(如x.new A(),x必须是FileTree
的实例。)
结合出错的代码,很容易知道根源是什么:
class Node
是非静态内部类public static void outputThreeFormat(String[] in)
是静态方法可以把class Node
作为外部类定义,这样在FileTree类中不管是静态还是非静态方法都可以直接new Node初始化个节点。
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);
}
}
可以把class Node
作为静态内部类定义,即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);
}
}
如下所示:
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);
}
}
到此这篇关于解决Java变异出现错误No enclosing instance of type XXX is accessible
的文章就介绍到这了,更多相关解决Java错误No enclosing instance of type XXX is accessible
内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: 解决Java变异出现错误No enclosing instance of type XXX is accessible
本文链接: https://lsjlt.com/news/137158.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0