java - 将泛型参数扩展到 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 调用此方法而不会出现编译器错误。
解决方案
推荐阅读
- ios - 可以从ios应用程序中提取游戏文件吗?
- android - 在奥利奥上找不到文件问题
- facebook - react-native 无法在安卓平台上运行
- python - 删除文件或重写时的警告
- android - 哪些工具可用于移动应用程序的性能测试
- php - 未经许可弹出浏览器未从提交表单中的输入获取值
- javascript - 从 json 字符串中提取某些列和行
- powershell - 用于检测 BizTalk 发送端口的活动实例的 PowerShell 脚本
- node.js - Nodejs/Puppeteer - 导航超时
- c# - PostSharp Caching MethodInterceptionAspect 使用 ASP.NET Core 内存缓存