在java中如何动态地声明一个对象?

zxjcool 2006-07-19 09:51:50
示例如下:

String str="a";
for(……)
{
My str = new My(); //这一条代码是有错误的
 …………
str = str+"a";
}

上面注释部分,表明我str是变化的.

按上面的要求,要求达到以下目的:

每次产生的对象名都不一样;按上面的例子,产生的对象应该是:a,aa,aaa,aaaa……;这些对象都是通过My实例化出来的.

有什么办法解决吗?或者换种方式也可以.
...全文
892 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
OnlyFor_love 2006-07-19
  • 打赏
  • 举报
回复
呵呵 顶一下
Voxer 2006-07-19
  • 打赏
  • 举报
回复
你是要得到当前选中菜单的名称吗?
MenuElement[] path = MenuSelectionManager.defaultManager()
.getSelectedPath();

StringBuffer sb = new StringBuffer();
// Retrieve the labels of all the menu elements in the path
for (int i = 0; i < path.length; i++) {
Component c = path[i].getComponent();
if (c instanceof JMenuItem) {
JMenuItem mi = (JMenuItem) c;
String label = mi.getText();
sb.append(label + "|");
}
}
sb.deleteCharAt(sb.length() - 1);
这个sb.toString()就是当前菜单项的名称,结构是比如 File|Exit|...|...
不知道是不是你想要的。
jokerjava 2006-07-19
  • 打赏
  • 举报
回复
程序的问题
根本不是你想的那回事 这圈子绕的

不熟悉SWT菜单结构
。。。 。。。
zxjcool 2006-07-19
  • 打赏
  • 举报
回复
谢谢楼上的朋友,我表达和分析也觉得有问题,但找不到合适的。。望指教。。。

我要在SWT窗口应用程序中,实现像IE一样菜单,菜单项显示出来正常。现在要得到当前选中菜单的名称,可是经测试发现,得到的同级菜单的名称全部被覆盖了,由此产生了上面一幕。。。。

Hashtable hashtable1 = new Hashtable();
ArrayList menuList1 = menudb.getAllMenuItems(collectionGuid,fguid);
Iterator menuIter1 = menuList1.iterator();
//第一级菜单输出
while(menuIter1.hasNext())
{
  hashtable1 = (Hashtable)menuIter1.next();
  Enumeration hashenus = hashtable1.keys();
  String guids = (String)hashenus.nextElement();
  //得到菜单元素名称
  String menuName = (String)hashtable1.get(guids);
  menuItem_1 = new MenuItem(menu, SWT.CASCADE);
  menuItem_1.setText(menuName);
  if(menudb.exitsNode(guids))
  {
 …………………………
  }
  else
  {
 //如果该节点是叶子结点,则具有点击事件
 if(menudb.isNoteEnd(guids))
 {
   menuItem_1.addSelectionListener(new SelectionAdapter()
   {
 public void widgetSelected(SelectionEvent e)
 {
 //问题在这里,输出检测出,同级下的菜单名被最后一个菜单所覆盖,很郁闷
 System.out.println(menuItem_1.getText());
 }
 });
}
   else
{
  //无任何事件
  ……………………
}
  }
}


zx2002027 2006-07-19
  • 打赏
  • 举报
回复
按楼主的意思肯定会存在重复声名的错误
changsoso 2006-07-19
  • 打赏
  • 举报
回复
晕,你要是解决那个,就用数组好了,要不你就用集合
jokerjava 2006-07-19
  • 打赏
  • 举报
回复
引用值的覆盖又怎么样呢

你要是早把要解决的问题说出来 说不定早解决了

你可能解决问题的出发点就是错误的
而且把被人带上了歧路
zxjcool 2006-07-19
  • 打赏
  • 举报
回复
主要是解决对象引用值的覆盖,也许可以通过Clone或接口类来实现。

我对java设计模式不太熟悉,所以一时之间找不出办法,所有才出现上面的要求。各位有好的建议,麻烦详细一下,在下感谢不尽。。。
jokerjava 2006-07-19
  • 打赏
  • 举报
回复
。。
即便实现了你这种要求

那你想做什么呢
zxjcool 2006-07-19
  • 打赏
  • 举报
回复
顶一下贴子。。

我的意思就是:fredonline(天天挨踢)  的意思,呵呵,不知有什么办法。。。


My a = new My();
My aa = new My();
My aaa = new My();
My aaaa = new My();
My aaaaa = new My();
My aaaaaa = new My();
……etc.
但是数量是不定的。
我理解,但是不会。
关键怎么才能把一个String str的值放到My _____ = new My();中
用str的值做为对象名。
jokerjava 2006-07-19
  • 打赏
  • 举报
回复
你还是考虑换种方式吧

不明白你想做什么
宏伊 2006-07-19
  • 打赏
  • 举报
回复
去看看类反射吧。
fredonline 2006-07-19
  • 打赏
  • 举报
回复
楼主想得到
My a = new My();
My aa = new My();
My aaa = new My();
My aaaa = new My();
My aaaaa = new My();
My aaaaaa = new My();
……etc.
但是数量是不定的。
我理解,但是不会。
关键怎么才能把一个String str的值放到My _____ = new My();中
用str的值做为对象名。
Java中有相关的方法?
zxjcool 2006-07-19
  • 打赏
  • 举报
回复
产生的对象名应该是:a,aa,aaa,aaaa……;这些对象都是通过My实例化出来的.


我就是想如何才能产生这些对象,如:a,aa,aaa,aaaa……。这些对象名的命名,是按一定规则产生的。
changsoso 2006-07-19
  • 打赏
  • 举报
回复
用数组可以吗?
kevinliuu 2006-07-19
  • 打赏
  • 举报
回复
不明白你的意思
zxjcool 2006-07-19
  • 打赏
  • 举报
回复
谢谢楼上的朋友,可是你得到的是str的实例啊.

我要得到的是多个对象名,并且这些对象名都属于My类的实例。

关键是这些对象名,如何动态地产生多个属于同一个类的对象。
kevinliuu 2006-07-19
  • 打赏
  • 举报
回复
Class c = Class.forName(str);
Object o = c.newInstance();


这样得到的o是一个str实例,但是你仍需要知道它的真正类型,来转型使用
candy84 2006-07-19
  • 打赏
  • 举报
回复
我的站也不错哟,有很多值得你看的哟,
来踩一下呀,
http://bbs.oneedu.cn/bbs
Pigwen 2006-07-19
  • 打赏
  • 举报
回复
UP

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧