アレックス・マン:
従業員の名前やアドレスが使用中の場合、私は私がチェックし、従業員とアドレスDAOクラスのための2つの関数呼び出しを持っています
それは一般的な例外をチェックし、スローすることのために私は次の一般的な機能を作成しました
checkOrElseThrowでCommonUtil.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.javaとAddressDAO.java以下のようにのように
checkAndReturnEmployeeにEmployeeDAO.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の、いずれかの新しい構文を作成しようとするのに役立つ、とあなたはすぐにも忘れることがあります。