用 lambda 替换 Anonymous inner class
Replace Anonymous inner class by lambda
我收到一个 Sonar 建议,将蛋白内部 class 更改为 lambda。
List<StsTxn> collect = externalPayments.stream().map(new Function<PaymentExternal, Payment>() {
@Override
public Payment apply(PaymentExternal t) {
Payment payment = new Payment();
try {
BeanUtils.copyProperties(payment, t);
} catch (IllegalAccessException | InvocationTargetException e) {
logger.error(e.getMessage(), e);
}
return payment;
}
}).
如果您使用的是 IntelliJ Idea,那么按 Alt
+ Enter/Return
应该会自动将其转换为 lambda。
如果您必须手动执行此操作,则如下所示:
List<StsTxn> collect = externalPayments.stream().map( t -> {
Payment = new Payment();
//try-catch block
return payment;
});
在Java-8中,JVM会自动寻找相关的方法并覆盖它,但你只能将此功能用于功能接口。
public Payment createPayment(
List<StsTxn> collect = externalPayments.stream().map(
t -> {
Payment payment = new Payment();
try {
BeanUtils.copyProperties(payment, t);
} catch (IllegalAccessException | InvocationTargetException e) {
logger.error(e.getMessage(), e);
}
return payment;
})
我收到一个 Sonar 建议,将蛋白内部 class 更改为 lambda。
List<StsTxn> collect = externalPayments.stream().map(new Function<PaymentExternal, Payment>() {
@Override
public Payment apply(PaymentExternal t) {
Payment payment = new Payment();
try {
BeanUtils.copyProperties(payment, t);
} catch (IllegalAccessException | InvocationTargetException e) {
logger.error(e.getMessage(), e);
}
return payment;
}
}).
如果您使用的是 IntelliJ Idea,那么按 Alt
+ Enter/Return
应该会自动将其转换为 lambda。
如果您必须手动执行此操作,则如下所示:
List<StsTxn> collect = externalPayments.stream().map( t -> {
Payment = new Payment();
//try-catch block
return payment;
});
在Java-8中,JVM会自动寻找相关的方法并覆盖它,但你只能将此功能用于功能接口。
public Payment createPayment(
List<StsTxn> collect = externalPayments.stream().map(
t -> {
Payment payment = new Payment();
try {
BeanUtils.copyProperties(payment, t);
} catch (IllegalAccessException | InvocationTargetException e) {
logger.error(e.getMessage(), e);
}
return payment;
})