我使用Spring和Hibernate以及所有Java 8的东西在Intellij中导入了一个程序,我遇到了一个没有看到Java 8的问题。 JDK已设置且导入正常;我真的不明白为什么我的IDE用红色强调了这个代码。代码是:
@Entity
@Table(name = "author")
public class Author extends BaseEntity<Long> {
@Column(name = "name")
private String name;
@OneToMany(mappedBy = "author", fetch = FetchType.EAGER)
private List<Book> bookList;
public Author() {
}
public Author(String name, List<Book> bookList) {
this.name = name;
this.bookList = bookList;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Book> getBookList() {
return bookList;
}
public void setBookList(List<Book> bookList) {
this.bookList = bookList;
}
public Set<Book> getBooks() { // !!!!! here lines 1
return Collections.unmodifiableSet( // 2
this.bookList.stream(). // 3
collect(Collectors.toSet()));//4 are red
}
还有import
声明:
import java.util.stream.Collectors;
也是红色的。当我点击错误时,它说:
Incompatible types.Required set <packet.model.book>
Found set <java.lang.Object>
第一方可能出现什么问题?
答案 0 :(得分:2)
答案 1 :(得分:0)
我想你使用maven,对吗?如果是,请检查pom.xml
中定义的java版本,如果未定义,则IDE使用的默认值可能与1.8
不同。
您可以使用maven-compiler-plugin并明确将jdk版本设置为1.8
:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<showWarnings>true</showWarnings>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
请确保您还将语言级别设置为Java 8.如果你去文件 - &gt;项目结构 - &gt;项目设置 - &gt;项目,您可以在那里配置项目SDK和项目语言级别。确保两者都设置为Java 8.