降级到Java 1.7会破坏com.google.common.collect的使用

时间:2018-03-21 19:33:21

标签: java

我有一个在Java 1.8中运行良好的程序(它最初是为1.6编写的)。我将pom.xml中的Java版本更改为1.7,以下行不再有效:

import com.google.common.collect.Lists;

List<WekaFeature<Document>> myFeats = null;
if (abc == 123) {
    myFeats = Lists.newArrayList(new WekaFeature[]{new AFeature(), new BFeature(), new CFeature()});
}

错误是:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project myproject: Compilation failure: Compilation failure:
[ERROR] /tmp/build_7d4663fc58427c700939b5e36e6e7e1d/src/main/java/com/example/MyService.java:[252,49] incompatible types
[ERROR]   required: java.util.List<my.tools.feature.core.WekaFeature<my.tools.document.core.Document>>
[ERROR]   found:    java.util.ArrayList<my.tools.feature.core.WekaFeature>

我是Java的新手,我不熟悉com.google.common.collect.Lists库。我知道List是一个接口,而ArrayList是一个实现,所以为什么它现在不工作,为什么它在Java 1.8中工作呢?

1 个答案:

答案 0 :(得分:2)

您可以使用以前版本的Guava库:

  

番石榴有两种口味。

     

JRE风格需要JDK 1.8或更高版本。如果需要JDK支持   1.7或Android,使用Android风味。你可以在android目录中找到Android Guava源码。

或将您的代码更改为此代码:

myFeats = new ArrayList<>();
myFeats.add(new AFeature());
myFeats.add(new BFeature());
myFeats.add(new CFeature());