我知道前段时间我问了几乎相同的问题,但是我有一个非常相似的新问题-但是你们当时给我的解决方案现在不起作用:(
我有一个 IDL 接口:
interface User {
string toString();
//..
};
interface Group {
typedef sequence<User> Users;
Users getUsers();
};
当我将它翻译成 C++ 时,我得到了这样的结果:
// ...
Group::Users* GroupImpl::getUsers()
{
// ..return sequence of 'User'-objects
}
在客户端(用 Java 编写)我想向我的用户展示。我做这样的事情:
public void showAllUsers() {
User[] users = interface_obj.getUsers();
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Main Node");
for(int i=0; i<users.length;i++) {
User u = users[i];
DefaultMutableTreeNode node = new DefaultMutableTreeNode(
((UserView)u).getUser());
root.add(node);
}
treeForumReview.setModel(new DefaultTreeModel(root));
}
当然,我有一堂课:
public class UserView {
private final User f;
private UserView(User f) {
this.f = f;
}
public Forum getUser() {
return this.f;
}
@Override
public String toString() {
String ret = null;
ret = this.f.getName();
return ret;
}
}
但是在运行所有这些时,我收到一条消息:
当我像我写的那样这样做时,我只看到我的用户对象的 IOR:
IOR :0123405948239481293812312903891208320131293812381023
IOR: 0092930912617819919191818173666288810010199181919919
等等 ...
如何做到这一点,看到他们的toString()
代表DefaultMutableTreeNode
?我不想这样做:
model.addElement(users[i].toString());
那不是重点。当我使用 RMI 而不是 CORBA 时,model.addElement(users[i]);
这正是我所需要的,因为我看到了用户字符串表示。但我需要使用 CORBA 并存储在 DefaultMutableTreeNode corba-user-objects 中,而不是字符串。请帮忙。