我不能正确地使用这种 map 方法.我需要指定通用Think<R>,但在哪里?

public class Think<T> implements Supplier<T> {

  private Supplier<T> supplier;

  public Think(Supplier<T> expression) {
    this.supplier = () -> evaluate(expression);
  }

  public static <T> Think<T> of(T value) {
    return new Think<>(() -> value);
  }

  private synchronized T evaluate(Supplier<T> expression) {
    this.supplier = expression;
    return this.supplier.get();
  }

  @Override
  public T get() {
    return this.supplier.get();
  }

  public <R> Think<R> map(Function<? super T, ? extends R> mapper) {
    return Think.of(() -> mapper.apply(get()));
  }

yield 率

incompatible types: cannot infer type-variable(s) T (argument mismatch; R is not a functional interface)

推荐答案

方法map本身是正确的,但是当您调用Think.of()时就会出现问题.

更改Think.of()方法以接受供应商,而不是类型R的直接值.

public static <T> Think<T> of(Supplier<T> supplier) {
    return new Think<>(supplier);
}

Java相关问答推荐

空手道比赛条件

如何调用Firebase Realtime Database中的子图像列表到android studio中的回收器视图?

Junit with Mockito for java

有没有一种方法使保持活动设置专用于java.net.http.HttpClient的一个实例

使用联接和分页的SpringBoot Spring数据JPA

将带有js文件的 bootstrap 程序导入maven项目时出错

Java中将文本拆分为数字或十进制数字和字符串

Spring动态反序列化JSON可以是列表,也可以只是一个对象

Java组件项目中的JavaFX对话框国际化

Spring Framework6.1中引入的新RestClient是否有适合于测试的变体,就像RestTemplate和TestRestTemplate一样?

对从Spring Boot 3.1.5升级到3.2.0的方法的查询验证失败

为什么相同的数据条码在视觉上看起来不同?

JavaFX,GridPane:在GridPane的列中生成元素将保持所有列的宽度

通过/失败的参数化junit测试方法执行数

如果c不为null,Arrays.sort(T[]a,Comparator<;?super T>;c)是否会引发ClassCastException?

设置背景时缺少Android编辑文本下划线

如何用Micrometer&;斯普肯

Spring Mapstruct如何获取Lazy初始化实体字段的信息?

java.util.LinkedList()是如何成为MutableList的实例的?

JAVA 正则表达式识别字符串string或字符串内的字符char