2016-06-14 91 views
0

我使用Spring和Hibernate以及所有Java 8的东西导入了一个Intellij中的程序,并且我遇到了Java 8没有看到的问题。 JDK已设置并且导入正常;我真的不明白为什么我的IDE强调这个代码是红色的。该代码是:无法识别java 8 lambda,但配置正常

@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

我想你使用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.如果你去文件 - >项目结构 - >项目设置 - >项目,您可以在那里配置项目SDK和项目语言级别。确保两者都在项目结构设置为Java 8

2

组Java 8 ctrl+alt+sFile -> Project Structure

看到下面的图片

img1 img2 img3

相关问题