我有多个检查折扣的公共方法,我希望不多次重复代码,并且只需要公共方法可以访问的私有方法中的大部分代码。这是代码。这可能吗?
public static boolean isE1(WebOrder order)
{
if(order.getPromos().stream().filter(i -> E1.contains(i.toUpperCase())).findFirst().isPresent())
{
return true;
}
else
{
List<Discount> discounts = new LinkedList<>();
order.getItems().forEach(i -> discounts.addAll(i.getDiscounts()));
if(!discounts.isEmpty())
{
return discounts.stream()
.filter(i -> E1.contains(i.getCode().toUpperCase()))
.findFirst()
.isPresent();
}
else
{
return false;
}
}
}
public static boolean isE2(WebOrder order)
{
if(order.getPromos().stream().filter(i -> E2.contains(i.toUpperCase())).findFirst().isPresent())
{
return true;
}
else
{
List<Discount> discounts = new LinkedList<>();
order.getItems().forEach(i -> discounts.addAll(i.getDiscounts()));
if(!discounts.isEmpty())
{
return discounts.stream()
.filter(i -> E2.contains(i.getCode().toUpperCase()))
.findFirst()
.isPresent();
}
else
{
return false;
}
}
}
答案 0 :(得分:1)
是的,有可能:
只需使用私有静态启动方法。
public static boolean isE2(WebOrder order)
{
yourMethod(order);
}
private static yourMethod(WebOrder order){
//your code
if(order.getPromos().stream().filter(i -> E1.contains(i.toUpperCase())).findFirst().isPresent())
{
return true;
}
else
{
List<Discount> discounts = new LinkedList<>();
order.getItems().forEach(i -> discounts.addAll(i.getDiscounts()));
if(!discounts.isEmpty())
{
return discounts.stream()
.filter(i -> E1.contains(i.getCode().toUpperCase()))
.findFirst()
.isPresent();
}
else
{
return false;
}
}
}