java - 参数化接口中的方法类型被删除,而该类型与参数化接口没有连接。为什么?
问题描述
我有和界面:
import java.util.Optional;
public interface SomeInterface<T> {
Optional<Integer> someMethod();
}
让我们调用接口实例的方法:
public class CheckInterfaceInstance {
public void check(SomeInterface<?> instance) {
instance.someMethod().get().doubleValue();
}
}
一切都很好,没有编译错误。
但是,如果我声明check()
没有“任何类型”的方法的参数,那么我们会遇到编译错误:
public class CheckInterfaceInstance {
public void check(SomeInterface instance) { //I removed <?>
instance.someMethod().get().doubleValue();
}
}
编译器将类型instance.someMethod().get()
视为对象。所以它抱怨 not existing method .doubleValue()
。
如您所见,声明与ofOptional<Integer> someMethod()
完全无关。但是编译器错过了.<T>
SomeInterface
Optional
为什么?
解决方案
推荐阅读
- html - 使用引导程序时,如何在 Chrome INPUT 中显示 X(清除)类型为 Search?
- javascript - 使用 JS 的 reduce、map 或 filter 功能
- winapi - 用于检测内存泄漏的 Windows 内存指标
- laravel - 使用空白请求为导航链接添加活动类
- php - 从脚本发送时的 SQL 语法错误
- reactjs - 减速器未连接
- javascript - 无法编译离子项目
- python - Python/Tinker 'datetime.date' 对象没有属性 'get'(在记事本文档中输入日期)
- reactjs - Apollo 使用突变响应最佳实践
- amazon-web-services - Slack api 激活 users.getPresence() 方法