为什么在访问级别关键字后指定泛型

时间:2018-10-08 16:57:36

标签: java generics syntax optional

我正在研究Optional.map的实现,即:

public<U> Optional<U> map(Function<? super T, ? extends U> mapper) {
        Objects.requireNonNull(mapper);
        if (!isPresent())
            return empty();
        else {
            return Optional.ofNullable(mapper.apply(value));
        }
    }

什么是public<U>?为什么在访问级别修饰符之后指定泛型?

为什么不这样声明方法?

public Optional<U> map(Function<? super T, ? extends U> mapper) {

1 个答案:

答案 0 :(得分:2)

这是方法的通用规范。 U不是来自类的,但是相同的方法可以采用任何类型的映射器Function,并将为此返回适当的Optional<U>