Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何访问流中的getter和setter_Java_Spring_Spring Boot_Java 8_Java Stream - Fatal编程技术网

Java 如何访问流中的getter和setter

Java 如何访问流中的getter和setter,java,spring,spring-boot,java-8,java-stream,Java,Spring,Spring Boot,Java 8,Java Stream,我有一个方法,它接受一个json对象并将其插入aws弹性搜索服务,但我想编写另一个方法,它接受多个json对象并将它们插入aws弹性搜索 /** * Create the Product in ElasticSearch * * @param product The Product * @return The response string * @throws JsonProcessingException Throws JsonProcessingException when res

我有一个方法,它接受一个json对象并将其插入aws弹性搜索服务,但我想编写另一个方法,它接受多个json对象并将它们插入aws弹性搜索

/**
 * Create the Product in ElasticSearch
 *
 * @param product The Product
 * @return The response string
 * @throws JsonProcessingException Throws JsonProcessingException when response cannot be parsed
 */
public String createNewProduct(Product product) throws JsonProcessingException {
    final ObjectMapper objectMapper = new ObjectMapper();
    final String json = objectMapper.writeValueAsString(product);
    if (json != null) {
        AwsResponse response = createDocument(ElasticSearchConstants.PRODUCTS_INDEX,
            ElasticSearchConstants.PRODUCTS_DOCUMENT_TYPE,
            json,
            product.getPartNo());
        // Creating a new document not seen before results in a 201 status, where as overwriting a previous document results in a 200
        if (response != null && (response.getHttpResponse().getStatusCode() == HttpStatus.CREATED.value()
            || response.getHttpResponse().getStatusCode() == HttpStatus.OK.value())) {
            LOGGER.info("Successfully created new Product", product.getPartNo(), product.getLevelOne());
            return product.getPartNo();
        }
    }

    return null;
}

/**
 * Create new Products in ElasticSearch
 * @param products The product
 * @throws JsonProcessingException Throws JsonProcessingException when response cannot be parsed
 */
public String createNewProducts(ArrayList<Product> products) throws JsonProcessingException{
    final ObjectMapper objectMapper = new ObjectMapper();
    products.stream()
        .map(product -> {
          try {
              return objectMapper.writeValueAsString(product);
          } catch (JsonProcessingException e) {
              return new JsonProcessingException(e){};
          }
      })
      .forEach(product -> {
          createDocument(ElasticSearchConstants.PRODUCTS_INDEX,
              ElasticSearchConstants.PRODUCTS_DOCUMENT_TYPE,
              product,
              products.stream().forEach(p->p::getPartNo)
              );
      });




    return null;
}
/**
*在ElasticSearch中创建产品
*
*@param product该产品
*@返回响应字符串
*@throws-JsonProcessingException在无法分析响应时抛出JsonProcessingException
*/
公共字符串createNewProduct(Product Product)引发JsonProcessingException{
最终ObjectMapper ObjectMapper=新ObjectMapper();
最终字符串json=objectMapper.writeValueAsString(产品);
if(json!=null){
AwsResponse response=createDocument(ElasticSearchConstants.PRODUCTS\u索引,
ElasticSearchConstants.PRODUCTS\u DOCUMENT\u TYPE,
json,
product.getPartNo());
//创建以前未看到的新文档将导致201状态,而覆盖以前的文档将导致200状态
if(response!=null&&(response.getHttpResponse().getStatusCode()==HttpStatus.CREATED.value())
||response.getHttpResponse().getStatusCode()==HttpStatus.OK.value()){
LOGGER.info(“成功创建了新产品”,Product.getPartNo(),Product.getLevelOne());
return product.getPartNo();
}
}
返回null;
}
/**
*在ElasticSearch中创建新产品
*@param products该产品
*@throws-JsonProcessingException在无法分析响应时抛出JsonProcessingException
*/
公共字符串createNewProducts(ArrayList products)引发JsonProcessingException{
最终ObjectMapper ObjectMapper=新ObjectMapper();
products.stream()
.map(产品->{
试一试{
返回objectMapper.writeValueAsString(产品);
}捕获(JsonProcessingException e){
返回新的JsonProcessingException(e){};
}
})
.forEach(产品->{
createDocument(ElasticSearchConstants.PRODUCTS_索引,
ElasticSearchConstants.PRODUCTS\u DOCUMENT\u TYPE,
产品,,
products.stream().forEach(p->p::getPartNo)
);
});
返回null;
}
如您所见,createDocument方法接受4个参数,其中4个是字符串 第一种方法非常有效,但第二种方法有一个问题。
当我尝试获取partNo时,它会给我一个错误,因为正常情况下“void不是功能接口”,我如何才能使它工作。

您不需要
映射
操作,
forEach
可以在您的情况下工作。在这种情况下,
stream
s的使用也不是很有效。您可以简单地为循环编写一个
,并按如下方式执行操作:

for (Product product : products) {
    String json = objectMapper.writeValueAsString(product);
    // handle the exception as well above
    createDocument(ElasticSearchConstants.PRODUCTS_INDEX,
            ElasticSearchConstants.PRODUCTS_DOCUMENT_TYPE,
            json, product.getPartNo());
}

您不需要
map
操作,在您的情况下,
forEach
可以工作。在这种情况下,
stream
s的使用也不是很有效。您可以简单地为
循环编写一个
,并按如下方式执行操作:

for (Product product : products) {
    String json = objectMapper.writeValueAsString(product);
    // handle the exception as well above
    createDocument(ElasticSearchConstants.PRODUCTS_INDEX,
            ElasticSearchConstants.PRODUCTS_DOCUMENT_TYPE,
            json, product.getPartNo());
}

Product::getPartNo
p->p.getPartNo()
。。或者更确切地说,您案例中的问题应该是使用中的方法的签名
createDocument
,不应该仅用单个
产品调用该方法吗
product::getPartNo
p->p.getPartNo()
。。或者更确切地说,您的问题应该是使用中的方法的签名
createDocument
,不应该只使用一个
产品调用它吗?啊,我知道了,但我是streams的新手,所以我正在尝试提高我的技能,谢谢,啊,我知道了,但我是streams的新手,所以我正在努力提高我的技能,谢谢