从Java中的方法返回列表时遇到问题
我正在学习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;
}
}
# 1 楼答案
noderRay()方法是用于TestingArrays对象的方法。所有节点和列表都是TestingArrays对象的属性
你需要创建一个TestingArrays对象来访问这些东西
用以下代码替换主方法:
# 2 楼答案
不能从静态上下文调用非静态方法。制作方法}。那会解决你的问题
nodeArray()
{此外,不能对非静态字段进行静态引用,即
Node1
、Node2
、Node3
、Node4
。所以也让他们static
而且
nodeArray.get(i).label
是错误的,因为它应该是nodeList.get(i).label
# 3 楼答案
这很奇怪:
noderray是一个函数。它怎么能编译呢?这就是为什么给函数和变量起好名字很重要
此外,因为它是一个列表,所以可以使用foreach,如下所示: http://www.leepoint.net/notes-java/flow/loops/foreach.html
哦,在main函数中,您应该创建一个新的类实例并使用它,或者将所有的方法和变量设置为静态