12.07.2015 Views

VisiBroker Edition

VisiBroker Edition

VisiBroker Edition

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

处 理 对 象 引 用如 果 客 户 端 程 序 和 对 象 实 现 驻 留 在 不 同 的 进 程 内 ( 可 能 在 同 一 主 机 上 , 也 可 能 不 在同 一 主 机 上 ), 则 _is_remote() 成 员 函 数 返 回 1 ( 在 C++ 下 ) 或 者 _is_remote()方 法 返 回 true ( 在 Java 下 )。表 10.4用 于 确 定 对 象 引 用 位 置 和 状 态 的 方 法 (Java) 或 成 员 函 数 (C++)方 法_is_bound_is_local_is_remote说 明如 果 有 到 该 对 象 的 活 动 连 接 。 则 返 1 ( 在 C++ 下) 或 true ( 在 Java) 下 。如 果 该 对 象 在 本 地 地 址 空 间 实 现 , 则 返 回 1 ( 在C++ 下 ) 或 true ( 在 Java 下 )。如 果 该 对 象 的 实 现 不 驻 留 在 本 地 地 址 空 间 内 , 则返 回 1 ( 在 C++ 下 ) 或 true ( 在 Java 下 )。注 :如 果 该 对 象 处 于 调 用 的 该 方 法 的 进 程 , 则 _is_local() 返 回 1 ( 在 C++ 下 ) 或 者true ( 在 Java 下 )。检 查 不 存 在 的 对 象C++:您 可 以 使 用 _non_existent() 成 员 函 数 来 确 定 与 对 象 引 用 相 关 的 对 象 实 现 是 否 仍 然存 在 。 这 种 方 法 实 际 上 是 “ping” 该 对 象 以 确 定 它 是 否 仍 然 存 在 ; 如 果 该 对 象 不存 在 , 则 返 回 1。窄 转 换 对 象 引 用将 对 象 引 用 的 类 型 从 常 规 的 超 级 类 型 转 换 成 更 具 体 的 次 级 类 型 的 过 程 称 做 窄 转 换 。C++:_narrow() 成 员 函 数 可 能 会 构 建 一 个 新 的 C++ 对 象 , 并 返 回 一 个 指 针 到 该 对 象 。 当您 不 再 需 要 该 对 象 时 , 您 必 须 释 放 由 _narrow() 返 回 的 对 象 引 用 。Java: 您 不 能 使 用 Java 造 型 工 具 来 实 现 窄 转 换 。<strong>VisiBroker</strong> <strong>Edition</strong> 为 每 个 对 象 界 面 保 留 一 个 typegraph, 以 便 可 以 通 过 使 用 对象 的 narrow() 方 法 来 实 现 窄 转 换 。C++:Java:C++:如 果 narrow 成 员 函 数 确 定 不 可 能 将 对 象 转 换 为 您 所 要 求 的 类 型 , 它 将 返 回 NULL。如 果 窄 转 换 失 败 , 则 会 掷 出 IDL 违 例 CORBA::BAD_PARAM , 这 是 因 为 对 象 引 用 不 支持 所 要 求 的 类 型 。Account *acct;Account *acct2;Objec *obj;acct = Account::_bind();obj = (CORBA::Object *)acct;acct2 = Account::_narrow(obj);在 Java 下 为 AccountManager 生 成 的 窄 转 换 方 法 :public abstract class AccountManagerHelper {. . .public static Bank.AccountManager narrow(org.omg.CORBA.Object object) {. . .客 户 基 础 10-7

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!