使用通配符时,无法使用某些方法(例如ArrayList.set
)并返回类似于
类型List中的方法set(int,capture#3-of?)不适用于参数(int,String)
我已阅读why这种情况,并想知道如何做到这一点。那就是编译器如何知道某些方法适用(例如List.get(int)
)但其他方法不适用?
答案 0 :(得分:3)
所有适用的规则都在Java Language Specification #15.12。
答案 1 :(得分:2)
编译器为每个出现的通配符分配特殊标记(capture#3-of ?
)并使用常规方法适用性规则(JLS 15.12.2)。
由于通配符的捕获与其他类型和其他捕获不兼容,因此产生了“不适用的方法”。