我如何将方法作为参数传递? Lambda表达

时间:2017-12-19 14:15:04

标签: java

我正在尝试将方法作为参数传递。怎么做?

我记得这个:

private static final Logger LOGGER = LoggerFactory.getLogger(MyClass.class);

@ExceptionHandler({ MyClass.class })
public ResponseEntity<BaseResponse> handleSLException(ServiceLayerException e, WebRequest request) { 

    checkCookie(request);
    } 
public void checkCookie(WebRequest request) {
     String answer = request.getHeader("cookie");
     if(answer!=null) {
        LOGGER.error("The cookies are: " + answer);
                }

如何使用Java 8和Lambda做同样的事情?我希望能够使用相同的方法和更先进的技术。

1 个答案:

答案 0 :(得分:0)

我相信以下代码描述了您正在寻找的内容。您可以使用谓词或类似表达式来实现所需。 import java.util.function.Predicate;

public class  Snippet{  

    private static Predicate pred = (element) -> element.equals("Sample3");
    private static Predicate pred2 = (element) -> element.equals("Sample3");
         public static void main(String args[]){String[] strArray = {"Sample3", "Sample4", "Sample5"};

         for(String str: strArray) {
             System.out.print("pred1");
             test(pred,str);
             System.out.print("pred2");
             test(pred2,str);
         }

         }

         public static void test(Predicate p,String str) {
             System.out.println(p.test(str));
         }
    }