少し前に私がほぼ同じ質問をしたことは知っていますが、非常によく似た新しい問題があります-しかし、あなたが私に与えた解決策は今は機能しません:(
私は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;
}
}
しかし、これをすべて実行すると、次のメッセージが表示されます。
私が書いたようにこれを行うと、Users-objectのIORのみが表示されます。
IOR :0123405948239481293812312903891208320131293812381023
IOR: 0092930912617819919191818173666288810010199181919919
等々 ...
toString()
でそれらの表現を見るために、それをそのようにする方法はDefaultMutableTreeNode
?私はこれをしたくない:
model.addElement(users[i].toString());
それは重要ではありません。CORBAの代わりにRMIを使用する場合、model.addElement(users[i]);
ユーザーの文字列表現が表示されるので、まさにそれが必要です。ただし、CORBAを使用して、文字列ではなくDefaultMutableTreeNodecorba-user-objectsに格納する必要があります。助けてください。