我正在学习java中的列表,但我很难从像任何原始数据类型的方法返回它。我试图做的就是返回一个节点列表,然后打印出所有标签。我做错了什么?
import java.util.ArrayList;
import java.util.List;
public class TestingArrays
{
List<Node> myList1 = new ArrayList<Node>();
List<Node> myList2 = new ArrayList<Node>();
List<Node> myList3 = new ArrayList<Node>();
List<Node> myList4 = new ArrayList<Node>();
private Node Node1 = new Node("One", myList1);
private Node Node2 = new Node("Two", myList2);
private Node Node3 = new Node("Three", myList3);
private Node Node4 = new Node("Four", myList4);
public static void main(String arg[])
{
List<Node> nodeList = nodeArray();
for (int i = 0; i < nodeList.size(); i++)
{
System.out.println(nodeArray.get(i).label);
}
}
public List<Node> nodeArray()
{
List<Node> tempList = new ArrayList<Node>();
tempList.add(Node1);
tempList.add(Node2);
tempList.add(Node3);
tempList.add(Node4);
return tempList;
}
}
答案 0 :(得分:2)
你不能从静态上下文中调用非静态方法。 make方法nodeArray()
static
。这将解决你的问题。
您也无法对非静态字段进行静态引用,即Node1
,Node2
,Node3
,Node4
。所以让他们static
。
nodeArray.get(i).label
也是错误的,因为它应该是nodeList.get(i).label
。
答案 1 :(得分:1)
这很奇怪:
nodeArray.get(i)
nodeArray是一个函数。怎么可能编译?这就是为函数和变量赋予好名字的重要性。
另外,因为它是一个列表,你可以使用foreach,如下所示: http://www.leepoint.net/notes-java/flow/loops/foreach.html
哦,在main函数中,您应该创建类的新实例并使用它,或者将所有方法和变量设置为静态。
答案 2 :(得分:1)
nodeArray()方法是TestingArrays对象的方法。所有节点和列表都是TestingArrays对象的属性。
您需要创建一个TestingArrays对象来访问这些内容。
用以下代码替换main方法:
public static void main(String arg[])
{
List<Node> nodeList = new TestingArrays().nodeArray();
for (int i = 0; i < nodeList.size(); i++)
{
System.out.println(nodeList.get(i).label);
}
}