2010-11-02 28 views
8

Essayez de compiler le code suivant dans JDK7:JDK7: Diamond syntaxe d'inférence confusion

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<>() { 
    }; 
    } 
} 

Pourquoi pas la seconde utilisation du travail de syntaxe de diamant?

Quelle est la grande différence avec la première utilisation?

+0

Margus, il utilise une nouvelle fonctionnalité [prévu] (http://code.joejag.com/2009/new-language-features-in-java-7/) pour Java 7. –

+0

Java 7 n'est pas encore définitif , Je présume qu'il s'agit d'un bug et que vous pourriez probablement le signaler à Oracle. Je doute que quiconque ici puisse nous éclairer dessus. – BjornS

+2

'@ BjornS': Ok, je signalerai un bug. J'ai juste l'expérience que beaucoup de "bugs" ne sont pas des bugs mais des malentendus de quelque chose, donc j'ai demandé ici d'abord;) –

Répondre

5

Classé bug report.
Quelqu'un d'autre déposé similar bug report avec même exemple;)
Il a été fixé maintenant (here).

+0

Oui, c'est probablement la seule réponse "correcte" possible, mais puisque je suis l'auteur, j'ai 2 jours jusqu'à ce que je puisse l'accepter;) –