2010-11-02 53 views
8

嘗試編譯下面的代碼在JDK7:JDK7:鑽石推斷語法混亂

import java.nio.file.*; 

public final class _DiamondSyntaxErrors { 
    public interface InterfaceA<T> { 
    } 

    public abstract static class ClassA<T> 
     implements InterfaceA<T> { 
    protected ClassA() { 
    } 
    } 

    public static void main(String... args) { 
    // no error 
    InterfaceA<Path> classA = new ClassA<>() { 
    }; 

    // error: cannot infer type arguments for SimpleFileVisitor<> 
    FileVisitor<Path> visitor = new SimpleFileVisitor<>() { 
    }; 
    } 
} 

爲什麼沒有鑽石語法工作的第二個用法?

第一次使用有什麼重大區別?

+0

Margus,他正在爲Java 7使用一項新功能[計劃](http://code.joejag.com/2009/new-language-features-in-java-7/)。 – 2010-11-02 06:38:41

+0

Java 7尚未最終確定,我會認爲這是一種錯誤,你可以將它報告給Oracle。我懷疑這裏的任何人都不會對此有所瞭解。 – BjornS 2010-11-02 07:56:52

+2

'@ BjornS':好的,我會報告一個錯誤。我只是有這樣的經驗,很多「錯誤」不是錯誤,而是誤解,所以我先問這裏) – 2010-11-02 12:23:19

回答

5

提交一個bug report
別人日提交similar bug report用相同的例子;)
現在固定(here)。

+0

是的,這可能是唯一可能的「正確」答案,但由於我是作者,所以我有2天時間才能接受;) – 2010-11-10 22:08:08