首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >泛型类型的编译时错误

泛型类型的编译时错误
EN

Stack Overflow用户
提问于 2014-08-25 21:16:19
回答 3查看 533关注 0票数 1

通常,在eclipse中,我可以运行代码而不会出现任何编译错误。然而,在使用ant文件时,我遇到了error: type argument Map is not within bounds of type-variable Type。我的ant文件有什么问题?

代码我认为是错误的;

代码语言:javascript
复制
[javac] class StratI implements Strat<Map> {
[javac]                                      ^
[javac]   where T is a type-variable:
[javac]     T extends Map<?,?> declared in interface Strat
[javac] 1 error

Ant - javac部分;

代码语言:javascript
复制
<target name="compile"  depends="init">
        <javac  compiler="javac1.7"
                destdir="${build.dir}/classes"
                source="1.7"
                target="1.7"
                includeantruntime="false"
                encoding="ISO-8859-1">

                <src    path="${src.dir}" />
                <classpath refid="classpath" />
        </javac>
</target>

注意:我已经在谷歌上搜索了这个错误。我没有看到任何能说明真正原因并说明如何解决它的来源。

EN

Stack Overflow用户

发布于 2014-08-25 21:40:41

Map是一个raw-type,如错误中所述,它是is not within bounds of type-variable Type,即T extends Map<?,?>。尽管你正在扩展一个“随心所欲”的映射,但它仍然是一个原始类型的规范。

您应该在以下位置更改StratI接口实现的声明:

代码语言:javascript
复制
class StratI implements Strat<Map<?,?>>

或者因为你在扩展

代码语言:javascript
复制
class StratI implements Strat<HashMap<?,?>>

或者因为它是一种实现

代码语言:javascript
复制
class StratI implements Strat<HashMap<Integer, String>>

编辑

Eclipse不会将其显示为错误的事实是,Eclipse不会为未参数化的原始类型显示编译错误。它会显示一条警告:

代码语言:javascript
复制
public interface myIn<T extends Map<?,?>>{
   void foo();
}

public class myClass implements myIn<Map>{
 @Override
 public void foo() {}

}

Eclipse将在Map下面加上警告:

Map是一种原始类型。对泛型类型Map<K,V>的引用应参数化为

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25486800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档