gpt4 book ai didi

java - 在 IDL + Java 中访问变量和参数

转载 作者:行者123 更新时间:2023-11-30 09:30:34 25 4
gpt4 key购买 nike

我现在正在研究分布式系统,所以...我必须学习 IDL 之类的东西。 :D我有这个需求:

在 IDL 中定义- 作为结构的帐户- 账户作为账户的序列- 具有某些帐户操作的接口(interface)客户:payIn (amount, accountId), - 如果成功则返回真,否则返回假getAccounts (name), - 返回一系列帐户(属于此人)- 具有帐户操作的界面管理员:创建一个新帐户删除帐户

这是我的 .idl 文件:

module AccountNaming
{
struct Account
{
long id;
double balance;
string name;
};

typedef sequence<Account> accounts;

interface Customer
{
boolean payIn(in double amount, in long accountId);
accounts getAccounts(in string name);
string helloCust();
};
interface Administrator
{
void createAcc();
void deleteAcc();
string helloAdmin();
};
};

我已经为 IDL 生成了所有的 POA、Helper、Holder 类。

在我的 Java 代码中,我有一个使用 IDL 代码的类:

import AccountNaming.*;
public class CustomerImpl extends CustomerPOA
{
public String helloCust()
{
return "Hello, dear Customer! :) ";
}

@Override
public boolean payIn(double amount, int accountId)
{
// how to get to the Customer's local variables ?
super.Customer.setAmount... // or something like that, because this doesn't work... etc.
return false;
}

@Override
public Account[] getAccounts(String name)
{
// TODO Auto-generated method stub
return null;
}
}

我知道 .idl 文件是正确的。 “helloCust/admin”方法有效。我的问题是如何访问客户/管理员的变量,以便我可以将它们设置为 payIn 、 getAccounts 方法中的参数...

最佳答案

您可以添加外观或工厂以允许您访问您的Customer/Administrator 接口(interface),因此在您的 IDL 中您还可以:

interface UserFactory 
{
Customer getCustomer(String customerName);
Administrator getAdministrator(String credentials);
}

这个接口(interface)的实现会让你从数据库等中查找任何细节

使用它,您可能不需要 getAccounts() 中的 name 字段(除非它用于过滤),您可以这样做:

Account[] accounts = getAccounts("not-needed-anymore");
for (Account account : accounts) {
if (account.id == accountId) {
account.balance += amount;
break;
}
}

这将更新您的 Account 数组信息,但您仍然需要保留数据结构。

关于java - 在 IDL + Java 中访问变量和参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13219692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com