checkOrElseThrow一般的な関数を記述するためのより良い方法

アレックス・マン:

従業員の名前やアドレスが使用中の場合、私は私がチェックし、従業員とアドレスDAOクラスのための2つの関数呼び出しを持っています

それは一般的な例外をチェックし、スローすることのために私は次の一般的な機能を作成しました

checkOrElseThrowCommonUtil.java

public static <R, C, T extends Throwable> R checkOrElseThrow(R rtn, C chk, Supplier<? extends T> ex) throws T
{
    if (chk != null)
    {
        throw ex.get();
    }
    return rtn;
}

そして上記の一般的な関数がで呼び出されているEmployeeDAO.javaAddressDAO.java以下のようにのように

checkAndReturnEmployeeEmployeeDAO.java

public Employee checkAndReturnEmployee(Employee employee) {
    return checkOrElseThrow(
        employee,
        employee.getAddressName(),
        () -> new EntityNotFoundException("Employee already in use for another address"));
}

第2のチェックアドレスがオンAddressDAO.java

public Address checkAndReturnAddress(Address address) {
    return checkOrElseThrow(
        address,
        address.getEmployeeName(),
        () -> new EntityNotFoundException("Address already in use for another address"));
}

質問

私のソリューションは、正常に動作しているが、私は、一般的な機能(書き換えるため、他のより良い方法があるかどうかを知りたいcheckOrElseThrow私が書かれています)

ウェストン:

これを書くための最良の方法はないのです。

public Employee checkAndReturnEmployee(Employee employee) {
    if (employee.getAddressName() == null) {
      throw new EntityNotFoundException("Employee already in use for another address"));
    }
    return employee;
}

上記のコードは同じように短いが、はるかに読みやすいです。これは、条件が何であるかを明確だし、それが満たされていないとき何が起こります。

カスタム関数は、唯一の他の人が理解できないだろうJavaの、いずれかの新しい構文を作成しようとするのに役立つ、とあなたはすぐにも忘れることがあります。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=410277&siteId=1
おすすめ