有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何链接不同类的两个对象?

我想为库构建一个RESTAPI(端点是客户和发票)。其中一个功能是添加发票(使用客户id提交请求)。首先,我必须检查传递的客户id(通过URL中的PUT)是否存在,这意味着要检查customerMap并查看讨论中的id。问题在于customerMap是clientService类(而不是invoiceService类)中的HashMap(使用该映射而不是数据库)。如何获取地图中存储的数据?在此,守则的相关部分:

客户

public class client {

private static final AtomicLong counter = new AtomicLong();

private final long id;

public client() {
    this.id = counter.getAndIncrement();
}

public long getId() {
    return id;
}
}

客户服务

public class clientService {
public Map<Long, client> clientMap = new HashMap<>();

public client put(client g) {
    clientMap.put(g.getId(), g);
    return g;
}

public Collection<client> getAll() {
    return clientMap.values();
}
}

发票

invoice  {

private static final AtomicLong counter = new AtomicLong();

private final long id;
private client client;

public invoice() {
    this.id = counter.getAndIncrement();
}

public long getId() {
    return id;
}
}

发票服务

public class invoiceService {
private Map<Long, invoice> invoiceMap = new HashMap<>();

public Rechnung createinvoice(invoice g, long id) {

    if(<!--client exists-->)
    invoicegMap.put(g.getId(), g);
    return g;
}}

共 (2) 个答案

  1. # 1 楼答案

    首先,向ClientService添加一个方法,以按id查找客户端:

    public Client getClientById(Long clientId) {
       return clientMap.get(clientId);
    }
    

    然后将ClientService注入到发票服务中

    public class invoiceService {
    private Map<Long, invoice> invoiceMap = new HashMap<>();
    private ClientService clientService; // provide a getter or a constructor argument for the service
    
    public Rechnung createinvoice(invoice g, long id) {
    
        if(clientService.getClientById(id) != null) {
          invoicegMap.put(g.getId(), g);
    }
        return g;
    }}
    
  2. # 2 楼答案

    为什么不将clientmap设为静态,并直接从客户端服务类访问它呢