标签: java-8

Java泛型:无法从对象转换为T

我有很多响应对象需要提供给 ui。我想要一个模板,这样我就可以做到,到目前为止,下面的代码还没有奏效。

private <T> T getResult(Class clazz){
    String fileName = "/path/file.json";
    File file = new File(BaseEndpoint.class.getResource(fileName.getFile());
    T result = null;

    try {
        result = mapper.readValue(file, clazz);
    } catch (IOException e) {
        e.printStackTrace();
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

java generics casting java-8

2
推荐指数
1
解决办法
4045
查看次数

当函数在 y 时间间隔内抛出异常时重试函数调用 n 次

我想在一段时间内失败时重试我的函数调用。这样做的最佳方法是什么。这会正常工作吗。

CompletableFuture.runAsync(() -> {
    for (int i = 0; i < 3; i++) {
        try {
            dndService.initateDNDRequest(transactionId, circle, category, "PREPAID");       
            break;
        } catch (Exception e) {
            try {
                TimeUnit.SECONDS.sleep(10);//wait for few minutes while next attempt
            } catch (InterruptedException e1) {
                LOGGER.error("Error while retrying request for DND.");
            }
            LOGGER.error("Request retry for DND count"+i);
        }
    }
}, executor);
Run Code Online (Sandbox Code Playgroud)

java schedule scheduled-tasks java-8 retry-logic

2
推荐指数
1
解决办法
1500
查看次数

在 Docker 上运行的 Springboot 无法从资源中读取文件

我有一个默认结构的 springboot 项目。我在资源/数据下有一个 excel 文件。我的程序需要加载 excel 文件并将数据从每张表中转储到不同的表中。

当我从 Eclipse 运行时,程序正确加载了 excel 文件,一切看起来都很好。但是,当我在 Docker 上部署同一个应用程序时,它无法从资源中读取文件。

有没有人遇到过这个问题?你是怎么解决的?

apache-poi java-8 docker spring-boot

2
推荐指数
1
解决办法
4205
查看次数

Java 8:检查两个或多个变量是否为空的优雅方法

如何在 Java 8 中完成?

if (var1 != null && var2!=null) {
     callMethod(var1,var2);
}
Run Code Online (Sandbox Code Playgroud)

我在想这样的事情,但有两个变量:

Optional.ofNullable(var1).ifPresent(var1 -> callMethod(var1));
Run Code Online (Sandbox Code Playgroud)

optional java-8

2
推荐指数
1
解决办法
3164
查看次数

如何将对象保存到通量内的反应式存储库

我有问题的答案清单。我想保存这些答案,然后(在 mongo 给他们一个 id 之后)将它们添加到他们的问题中。

现在我这样做:

public Flux<Answer> createAnswers(List<Answer> answers) {
    return answerRepository.saveAll(answers)
            .map(answer -> {
                questionRepository.findById(answer.getQuestionId())
                        .subscribe(question -> {
                            question.getAnswers().removeIf(ans -> Objects.equals(ans.getId(), answer.getId()));
                            question.getAnswers().add(answer);
                            questionRepository.save(question).block();
                        });
                return answer;
            });
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过..saveAll(answers).doOnNext()doOnEach()但是这样问题不会被保存。

似乎 map 用于转换数据而不是用于对每个元素进行操作。此外,我对调用block().

有没有更好的方法来实现我的目标?

java-8 project-reactor spring-webflux

2
推荐指数
1
解决办法
3281
查看次数

java8, optional.orElse() 不工作但 optional.orElseGet() 工作

这是我的代码:

return repository.findFirstByFxDateAndTransCurrAndCrdhldBillCurr(
            LocalDate.parse(request.getDate()), request.getTransactionCurrency(), request.getBillingCurrency())
            .orElse(getCurrencyExchangeRateFromApi(request));
Run Code Online (Sandbox Code Playgroud)

它不起作用,但我将 .orElse 更新为 .orElseGet

return repository.findFirstByFxDateAndTransCurrAndCrdhldBillCurr(
            LocalDate.parse(request.getDate()), request.getTransactionCurrency(), request.getBillingCurrency())
            .orElseGet(() -> getCurrencyExchangeRateFromApi(request));
Run Code Online (Sandbox Code Playgroud)

它工作完美,我不知道原因,是java8的错误吗?

我尝试再次运行多次,没有任何变化,但我尝试编写一个小示例,可选的 String 而不是来自存储库,也可以。

java-8

2
推荐指数
1
解决办法
1382
查看次数

使用 java 流,将具有相同键但不同值的两个映射合并到一个元组?

我有两个具有以下数据类型的地图,

Map<Pair<Long,String>, List<String>>  stringValues;
Map<Pair<Long,String>, List<Boolean>>  booleanValues ;
Run Code Online (Sandbox Code Playgroud)

我想将上述地图合并到以下数据结构

Map<Pair<Long,String>, Pair<List<String>,List<Boolean>>>  stringBoolValues;
Run Code Online (Sandbox Code Playgroud)

我的输入有两个具有相同键但不同值的映射。我想将它们组合成一对。我可以使用 java 流来实现这一点吗?

java stream java-8 java-stream

2
推荐指数
1
解决办法
627
查看次数

如何将 LocalDateTime 转换为`"yyyy-MM-dd'T'HH:mm:ss'Z'"` 格式

我正在尝试将字符串的格式解析"yyyy-MM-dd'T'HH:mm:ss'Z'"LocalDateTime如果日期是sunday或者saturday我想将日期更改为monday相同格式并返回,我知道我可以通过使用添加天数plusDays

String str = "2018-09-22T12:30:10Z";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'");
LocalDateTime dateTime = LocalDateTime.parse(str, formatter);
System.out.println(dateTime.plusDays(2));  //2018-09-24T12:30:10
Run Code Online (Sandbox Code Playgroud)

但我想以格式返回 2018-09-24T12:30:10Z

java datetime date java-8

2
推荐指数
2
解决办法
1万
查看次数

Java 8 Streams:如何流式传输另一个流。如何将代码转换为 java8 流

有人可以帮我将以下语句转换为 Java8:

我有一个这样的哈希图:

private Map<String, Pair<List<XYZFiles>, List<XYZFiles>>> someMap;
Run Code Online (Sandbox Code Playgroud)

我想在java8中转换以下逻辑:

private String searchFiles(String transmittedFileId) {

for (Pair<List<XYZFiles>, List<XYZFiles>> pair : someMap.values()) {
    List<XYZFiles> createdFilesList = pair.getKey();
    Optional<XYZFiles> xYZFiles= createdFilesList.stream()
                .filter(file -> 
                         file.getId().endsWith(transmittedFileId)).findFirst();
    if (xYZFiles.isPresent()) {
        return xYZFiles.get().getOriginId();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

java-8

2
推荐指数
1
解决办法
217
查看次数

比较 Java8 中的 Instants

我有这个对象:

public class MatchEvent implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;


    private Instant dateReceived;

    public Instant getDateReceived() {
        return dateReceived;
    }


    public void setDateReceived(Instant dateReceived) {
        this.dateReceived = dateReceived;
    }

}
Run Code Online (Sandbox Code Playgroud)

我想按收到的日期订购;

matchService
            .findAllByDay(today)
                .sorted(Comparator.comparing(MatchEvent::dateReceived))
Run Code Online (Sandbox Code Playgroud)

但似乎这是不可能的,因为我遇到了编译错误:

Multiple markers at this line
    - The method comparing(Function<? super T,? extends U>) in the type Comparator is not applicable for the arguments 
     (MatchEvent::dateReceived)
    - The type MatchEvent does not define …
Run Code Online (Sandbox Code Playgroud)

collections icomparable comparator java-8 java-stream

2
推荐指数
1
解决办法
2566
查看次数