java - 类型交集:在相交类型中使用类型变量
问题描述
我想将方法的返回类型声明为类型变量和静态接口(例如java.io.Serializable
)的交集。
理想情况下,我希望能够执行以下操作:
public class Main {
public static <I, T extends I & java.io.Serializable> T foo(I object) {
return null;
}
}
但是,此代码给出以下编译错误:
Main.java:3: error: a type variable may not be followed by other bounds
public static <I, T extends I & java.io.Serializable> T foo(I object) {
^
1 error
根据Java type intersection 的文档,这应该是可能的。
边界的形式受到限制(只有第一个元素可以是类或类型变量,并且边界中只能出现一个类型变量)以排除某些尴尬情况的出现。
错误似乎很清楚,但在文档中却没有提到这样的限制。据我了解,如果类型变量由于需要接口而不能在第一个位置之后出现,并且不能像错误所说的那样跟随任何其他绑定,这意味着类型变量不能在类型交集中使用。
Oracle 文档似乎另有说明。
感谢您的见解。
解决方案
推荐阅读
- amazon-web-services - Terraform 远程执行失败,权限被拒绝
- python - 如何对图像数据集进行探索性数据分析以进行目标检测?
- c# - 如何检查 ShowDialog 窗体的 WindowsState(最小化和前景)?
- amazon-web-services - 过期后如何刷新 AWS CloudWatch 向后和转发令牌?
- visual-studio - 具有多个依赖项项目/解决方案的 MSBuild
- spring-data - 获取投影接口的声明字段
- .net - 源分支值为 $/
- c# - 在确认之前更新装运行的数量会给出“错误:另一个进程已更新了“SOLine”记录。您的更改将丢失。”
- elasticsearch - Elasticsearch 可以用作 EDI 文档的存储吗?是否可取
- java - java.lang.RuntimeException: 方法代码太大!(我去couchbase查询数据。)