Java 在一个类中调用getName()方法有效,但在另一个类中则无效
我正在制作一个程序来迭代对象的数组列表,并将它们打印到屏幕上。为此,我使用了一个getName()方法。当我从我的一个类调用它时,不会返回任何结果,但是从另一个类调用它是有效的Java 在一个类中调用getName()方法有效,但在另一个类中则无效,java,arraylist,observable,Java,Arraylist,Observable,我正在制作一个程序来迭代对象的数组列表,并将它们打印到屏幕上。为此,我使用了一个getName()方法。当我从我的一个类调用它时,不会返回任何结果,但是从另一个类调用它是有效的 public class Customer { String name; public Customer(String name) { this.name=name; } public String getName() { return this.
public class Customer {
String name;
public Customer(String name) {
this.name=name;
}
public String getName() {
return this.name;
}
}
上面的代码是我要调用的getName()方法
public class Store {
private String name;
private ArrayList<Customer> customersStore;
public Store(String name) {
this.name=name;
customersStore=new ArrayList<Customer>();
}
public void addCustomer(Customer customer) {
customersStore.add(customer);
for(int i = 0; i<customersStore.size();i++){
System.out.print(customersStore.get(i).getName() + " ");
}
}
public String getName() {
return this.name;
}
public ArrayList<Customer> getCustomers() {
return this.customersStore;
}
}
然后将输入发送到StoreController以添加到ArrayList
public class StoreController extends Observable {
private Store model;
private StoreView view;
public StoreController(Store model, StoreView view){
this.model = model;
this.view = view;
}
public void addCustomer(Customer name){
model.addCustomer(name);
setChanged();
notifyObservers();
}
}
我不太熟悉观察者,但该计划的总体目标是在客户通过StoreController添加到商店时更新StoreView。非常感谢您的帮助。在更新观察者时,您正在创建
存储的新实例;因此,它有一个空的客户阵列。
更改notifyobsers()代码>至<代码>通知观察员(型号)代码>和更新方法,以:
@Override
public void update(Observable o, Object store) {
if (store instanceof Store) {
printStoreDetails((Store) store);
}
}
据我们所知,你从未在那家商店增加过顾客。您需要显示所有相关的代码,以便我们理解handI上的问题。我添加了显示数据输入方式的其余类。它是通过扫描仪输入的,然后随着每个新输入,arraylist将使用更新的条目再次打印。这不是我通常处理这个问题的方式,但使用观察者是需求的一部分。
public class StoreController extends Observable {
private Store model;
private StoreView view;
public StoreController(Store model, StoreView view){
this.model = model;
this.view = view;
}
public void addCustomer(Customer name){
model.addCustomer(name);
setChanged();
notifyObservers();
}
}
@Override
public void update(Observable o, Object store) {
if (store instanceof Store) {
printStoreDetails((Store) store);
}
}