Java 日食不';t显示编译错误,但ant编译失败
我有以下代码:Java 日食不';t显示编译错误,但ant编译失败,java,eclipse,generics,ant,Java,Eclipse,Generics,Ant,我有以下代码: SortedSetByDoubleValue<String,Double> set = SortedSetByDoubleValue.create(); 但是,将代码更改为: SortedSetByDoubleValue<String,Double> set = SortedSetByDoubleValue.<String,Double>create(); SortedSetByDoubleValue set=SortedSetByDoub
SortedSetByDoubleValue<String,Double> set = SortedSetByDoubleValue.create();
但是,将代码更改为:
SortedSetByDoubleValue<String,Double> set = SortedSetByDoubleValue.<String,Double>create();
SortedSetByDoubleValue set=SortedSetByDoubleValue.create();
它编译时没有错误
蚂蚁的目标是:
<javac srcdir="." fork="yes" executable="/usr/java/1.6.0.10/bin/javac" verbose="yes" destdir="build" debug="on" failonerror="true" source="1.6">
<classpath>
<fileset dir="../ant/dist">
<include name="**/*.jar" />
</fileset>
<fileset dir="../external/powermock-1.2.5/">
<include name="**/*.jar" />
</fileset>
<pathelement path="${external_jars}" />
</classpath>
</javac>
Eclipse使用与ant使用的常规javac不同的编译器。然而,更可能的问题是使用不同版本的Java,例如5.0和6 编辑:尝试以下操作
SortedSetByDoubleValue<String,Double> set =
SortedSetByDoubleValue<String,Double>.create();
SortedSetByDoubleValue集合=
SortedSetByDoubleValue.create();
据我所知,Java 5和Java 6之间的类型推断规则没有任何变化。类型推断是编译器之间差异最大的领域。通常情况下,bug出现在javac
(也就是说,Eclipse编译器通常更接近规范)。我尝试将sun编译器与ant一起使用,但它不起作用。为eclipse项目配置了相同的jdk,Achim同样正确。如果需要使用不同的编译器,IMHO最安全的选择是根本不依赖类型推断。发布足够的代码,以便其他人可以复制它。我想我提供了足够的代码,你还会期望什么?因此,如果我编译这一行代码,我将得到编译器错误消息?@蜥蜴比尔我的答案是唯一正确的答案。“这可能是一个编译器问题”,这算是一个答案?@unreputable-是的,这行代码在使用sun JDK编译时出错
SortedSetByDoubleValue<String,Double> set =
SortedSetByDoubleValue<String,Double>.create();