手机
当前位置:查字典教程网 >编程开发 >Java >Java解决No enclosing instance of type PrintListFromTailToHead is accessible问题的两种方案
Java解决No enclosing instance of type PrintListFromTailToHead is accessible问题的两种方案
摘要:今天在编译Java程序时遇到如下问题:NoenclosinginstanceoftypePrintListFromTailToHeadisa...

今天在编译Java程序时遇到如下问题:

No enclosing instance of type PrintListFromTailToHead is accessible. Must qualify the allocation with an enclosing instance

of type PrintListFromTailToHead (e.g. x.new A() where x is an instance of PrintListFromTailToHead).

源代码为:

public class PrintListFromTailToHead { public static void main(String[] args) { ListNode one = new ListNode(1); ListNode two = new ListNode(2); ListNode three = new ListNode(3); one.next = two; two.next = three; ArrayList<Integer> result = printListFromTailToHead(one); System.out.println("结果是:" + result); } class ListNode { public int val; public ListNode next; public ListNode() { } public ListNode(int val) { this.val = val; } } public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Stack<Integer> stack = new Stack<Integer>(); while (listNode != null) { stack.push(listNode.val); listNode = listNode.next; } ArrayList<Integer> arrayList = new ArrayList<Integer>(); while (!stack.isEmpty()) { arrayList.add(stack.pop()); } return arrayList; } }

问题解释:

代码中,我的ListNode类是定义在PrintListFromTailToHead类中的内部类。ListNode内部类是动态的内部类,而我的main方法是static静态的。

就好比静态的方法不能调用动态的方法一样。

有两种解决办法:

第一种:

将内部类ListNode定义成静态static的类。

第二种:

将内部类ListNode在PrintListFromTailToHead类外边定义。

两种解决方法:

第一种:

public class PrintListFromTailToHead { public static void main(String[] args) { ListNode one = new ListNode(1); ListNode two = new ListNode(2); ListNode three = new ListNode(3); one.next = two; two.next = three; ArrayList<Integer> result = printListFromTailToHead(one); System.out.println("结果是:" + result); } static class ListNode { public int val; public ListNode next; public ListNode() { } public ListNode(int val) { this.val = val; } }

第二种:

public class PrintListFromTailToHead { public static void main(String[] args) { ListNode one = new ListNode(1); ListNode two = new ListNode(2); ListNode three = new ListNode(3); one.next = two; two.next = three; } public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Stack<Integer> stack = new Stack<Integer>(); while (listNode != null) { stack.push(listNode.val); listNode = listNode.next; } ArrayList<Integer> arrayList = new ArrayList<Integer>(); while (!stack.isEmpty()) { arrayList.add(stack.pop()); } return arrayList; } } class ListNode { public int val; public ListNode next; public ListNode() { } public ListNode(int val) { this.val = val; } }

以上所述是小编给大家介绍的Java解决No enclosing instance of type PrintListFromTailToHead is accessible问题的两种方案,希望对大家有所帮助。

【Java解决No enclosing instance of type PrintListFromTailToHead is accessible问题的两种方案】相关文章:

java文件复制代码片断(java实现文件拷贝)

Java线程优先级示例代码

封装jndi操作ldap服务器的工具类

解决JTable排序问题的方法详解

java JOptionPane类的介绍

JAVA 时间区间的字符串合法性验证

Java instanceof 运算符的使用方法

java与c#的语法区别详细介绍

java实现fibonacci数列学习示例分享(斐波那契数列)

Java 图片压缩实现思路及代码

精品推荐
分类导航