首页 > 解决方案 > 铸造Java功能接口

问题描述

我有一个功能接口 Test 和一个对象(测试)实现了它。然后使用 HttpServletRequest request.setAttribute 方法将其设置为属性。当我尝试使用 request.getAttribute 方法在 JSP 文件中取回此属性时,我收到了 ClassCastException 错误。ListProductsServlet$$Lambda$37/186880189 不能强制转换为测试。

是否可以为请求添加 lambda 表达式作为属性并将其取回?我搜索了解决方案,但没有找到任何解决方案。

public interface Test<Product> {
    boolean func(Product p);
}

Test<Product> test = new Test<Product>() {
        @Override
        public boolean func(Product p) {
            return search == null || search.equals("") ? true : p.filterProducts("display");
        }
    };

request.setAttribute("test", test); //OK in servlet

Test test = (Test) request.getAttribute("test"); //ClassCastException 

标签: javafunctional-interface

解决方案


推荐阅读