【发布时间】:2016-09-16 02:21:28
【问题描述】:
我尝试了getter方法(创建一个getter方法是这个类并返回对象,以便您可以在另一个类中使用它)但是当我运行它时它只是一个空的ArrayList
在这个例子中,我让用户输入代码 (1, 2 ,3, ...) 和一个随机名称,然后将该值存储在 ArrayList 列表中,但是当我创建该类的实例并使用 getList () 方法它返回一个空的 ArrayList。 这是代码:
子测试站点1
package testsite;
public class SubTestSite1 {
private int id;
private String name;
@Override
public String toString() {
return this.getId() + " " + this.getName()+" ";
}
public SubTestSite1() {
}
public SubTestSite1(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
子测试站点2
package testsite;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Hashtable;
public class SubTestSite2 {
Hashtable hash = new Hashtable(100);
ArrayList list = new ArrayList(100);
Scanner sc = new Scanner(System.in);
public ArrayList getList() {
return list;
}
public void add() {
int id;
String name, choice = null, customer;
do {
System.out.print("enter id: ");
id = Integer.parseInt(sc.nextLine());
System.out.print("enter name: ");
name = sc.nextLine().trim().toUpperCase();
SubTestSite1 sts1 = new SubTestSite1(id, name);
list.add(sts1);
System.out.println("Continue? Y/N");
choice = sc.nextLine();
} while (choice.equalsIgnoreCase("y"));
System.out.print("Customer name: ");
customer = sc.nextLine();
hash.put(customer, list);
SubTestSite3 sts3 = new SubTestSite3();
sts3.displayOrder(this.hash, customer);
}
}
SubTestSite3
package testsite;
import java.util.Hashtable;
import java.util.ArrayList;
import java.util.Scanner;
public class SubTestSite3 {
public void displayOrder(Hashtable hash, String name) {
SubTestSite2 sts2 = new SubTestSite2();
System.out.println(sts2.getList());
}
}
主要
package testsite;
public class TestSite {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
SubTestSite2 sts2 = new SubTestSite2();
sts2.add();
}
}
不过,不要介意 Hashtable,我只是想玩弄它:P 谢谢!
【问题讨论】:
-
你在
sts2上打过add吗? -
表示你没有添加任何东西。调试有帮助。
-
但我想我是在添加这些值之后返回列表,对吗?所以理论上我在 Site3 中得到的列表应该是当前包含值的列表。
-
根据您显示的代码,似乎从未调用过 SubTestSite2.add 并且从未更改过 SubTestSite2.list。
-
我在初始化 ArrayList 之前添加了
static关键字,它可以工作....虽然我仍然很困惑;_;