LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 980|回复: 8

(java)如何根据名称动态返回匹配的实例?

[复制链接]
发表于 2004-3-26 20:43:38 | 显示全部楼层 |阅读模式
java编程中:

在一个类中,有几个相同类型的成员,比如
JButton button1 = new JButton("Button1");
JButton button2 = new JButton("Button2");
如何写一个函数,让它能够根据String name这个参数,动态地返回参数所给名字相同的JButton实例?

比如当参数为button1时,返回名为button1的按钮实例,当参数为button2时,返回名为button2的按钮实例。
发表于 2004-3-27 09:03:56 | 显示全部楼层
为什么要返回对象呢?一般用java进行界面编程,都是在创建按钮时设定其事件监听器,一有事件发生就由相应的监听器处理,不需要通过对象标识来查找对象。
 楼主| 发表于 2004-3-27 09:25:25 | 显示全部楼层
不是返回对象,是返回对象的实例。
比如在一个class中,有若干个按钮,它们都是private的,不可以通过点操作符取用,如果要在外部的类中给这些按钮加监听器,就必须把它们取出来,由于它们非常相似,如果为每一个按钮写一个取用的函数,太繁琐了,如果能通过一个函数来实现就好了。
发表于 2004-3-27 10:24:19 | 显示全部楼层
那你这个需求就有问题,本来使用类的目的就是为了封装,如果要在外部对private对象进行操纵,就违背了这个原则。如果你的目的是为了获得一个与原对象有相同属性的对象,可以new 一个对象返回给调用者,但如果是要对private对象进行操纵,唯一的办法是在class中增加方法作为对外的接口,外部的对象再通过这些接口来调用private对象的方法或者设置它们的属性。
发表于 2004-3-27 11:00:26 | 显示全部楼层
把对象放在容器(container)里面吧
不是很熟java的lib。如果没有相应的lib可能需要自己写一个class
实现insert, delete, get这三个基本功能
发表于 2004-3-27 11:07:24 | 显示全部楼层
用factory模式
 楼主| 发表于 2004-3-27 11:43:30 | 显示全部楼层
可能刚才说得不够清楚。

比如有这样一个实例:
private JButton button1 = new ("Button1");
有这样的一个函数:
public JButton getJButton (String name) { return ...;  }
如果参数name为"button1",那么该函数就会返回该JButton。
发表于 2004-3-27 12:06:42 | 显示全部楼层
我懂你说什么阿
就是说你需要用另外一个叫做container的类来维护那些JButton的类
 楼主| 发表于 2004-3-27 14:10:22 | 显示全部楼层
维护那些实例吧?不过这样也麻烦,我写的那个类中有四个按钮实例,现在只能为每一个按钮写一个函数了。或者把它们前面的private去掉。

JButton是类,有且只有一个JButton类:javax.swing.JButton。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表