2010-06-10 98 views
2

如果我想创建一个将人员添加到List的表单,我如何从另一个类访问该List?我在哪里定义该列表,以便其他类可以访问成员,大小等?例如,如果我有具有用于我的表单的GUI的Class Foo,以及用于向List添加和删除人员的按钮,那么将List声明为Class Foo的私有实例变量是有意义的。但是,如果我有另一个类Class Bar,它如何获取当前在该List中的值来更新其他图形组件?或者是一般地声明List的错误地方?谢谢。有权访问Java中其他类的私有变量

回答

2

其他班级不应该触摸列表。他们应该向Foo询问关于该列表的信息,此时Foo可以与其私人列表交谈。

+0

你能举一个例子说明如何工作吗?我想我很困惑,因为我只声明了一个Foo类型的对象,然后如果我有一个返回List大小的函数,我将不得不从Bar类创建一个新对象来使用成员函数getSize right ? – Crystal 2010-06-10 04:37:40

+0

为什么Bar不会使用Foo的现有实例? – 2010-06-10 04:41:32

+0

Bar如何使用在另一个类中创建的实例? – Crystal 2010-06-10 04:46:46

0

你不应该让他们直接访问私有变量(实际上外部类甚至不会看到它)。

要给/修改列表信息,Foo类应该有方法与私有列表进行交互。例如,你可以有一个名为getSize()的方法,它将返回列表的大小。

+0

我假设在第一句中有'没有'缺失 – 2010-06-10 04:46:15

+0

你说得对。我做了改变。 – Pran 2010-06-10 15:19:53

0

在最简单的情况下,使用一个getter函数:

然后其他对象可以直接在列表上进行操作。更面向对象,包列表访问方法在你的对象,并不会直接返回列表对象,如:

Object getItemFromList (int i) { return list.get(i); } 
1

正如我在my answer to your previous question说,我不认为数据的列表所属在gui组件中。我认为你应该有一个应用程序核心,一个服务,如果你想,你可以使用gui组件,而不需要耦合两者。

这样就可以在不更改核心应用程序代码的情况下创建Web客户端,命令行客户端,SWT客户端等。你只需写一个新的GUI并在那里注入服务。一个GUI应该可以访问服务,但不能成为一个。