捕获错误消息中的#XXX(Java Generics)

时间:2011-10-31 17:35:33

标签: java generics compiler-errors

我为一个愚蠢的问题道歉;只是想不出一个合适的词来搜索。试图编译第三方来源,我遇到了以下编译错误:

/Users/alf/Work/concise.svn/ExtendedSet/src/it/uniroma3/mat/extendedset/transactions/PairSet.java:[230,28] inconvertible types
found   : java.util.Collection<capture#741 of ? extends it.uniroma3.mat.extendedset.transactions.Pair<XT,XI>>
required: it.uniroma3.mat.extendedset.transactions.PairSet<XT,XI>

我想我知道问题是什么 - 但capture#741是什么意思?每次我尝试重新编译时,#之后的数字都会发生变化 - 不确定它是否有任何帮助。

更新

有问题的代码是,

public static <XT, XI> PairSet<XT, XI> newPairSet(Collection<? extends Pair<XT, XI>> ps, boolean compressed) {
    if (ps instanceof PairSet)
        return (PairSet<XT, XI>) ps;

并且javac error: inconvertible types with generics?中建议的修复工作正常 - 但capture#741的意思是什么?

1 个答案:

答案 0 :(得分:1)

如果您使用?,则捕获#xxx是泛型类型参数PairSet<?,?>的占位符。我认为您尝试转换为与实际类型参数不兼容的类型参数。

如果您不知道实际的类型参数,可以转换为PairSet并稍后转换为XT或XI。