首页 > 解决方案 > 将泛型参数扩展到 Java 函数

问题描述

这是一堂课

public static class Base {
  public int b1;
}

这是一个消费者功能 

public static Consumer<Base> consumer = (t) -> {
System.out.println("" + t.b1);};

这是调用顺序:   

Base base1 = new Base();
consumer.accept(base1);

这是我所期望的。

如果我更改消费者以接受 Base 的扩展: 

public static Consumer<? extends Base> consumer = (t) -> {
  System.out.println("" + t.b1);};

然后相同的调用序列不会编译。编译器抱怨消费者的捕获不适用于参数 Base

Base 肯定会扩展 Base??

如果我定义了一个方法而不是消费者: 

static <T extends Base> void accept(T param) {}

可以使用 base1 调用此方法而不会出现编译器错误。

标签: javafunctiongenerics

解决方案


推荐阅读