99 votes

Appeler des méthodes génériques statiques

Je suis tombé sur une situation curieuse impliquant des méthodes génériques statiques. Voici le code :

class Foo
{
    public static  Foo createFoo()
    {
        // ...
    }
}

class Bar
{
    private Foo member;

    public Bar()
    {
        member = Foo.createFoo();
    }
}

Comment se fait-il que je n'aie pas à spécifier d'arguments de type dans l'expression Foo.createFoo()? S'agit-il d'une sorte d'inférence de type? Si je veux être explicite à ce sujet, comment puis-je spécifier l'argument de type?

170voto

Jon Skeet Points 692016

Oui, il s'agit d'inférence de type basée sur la cible de l'assignation, selon la section 15.12.2.8 de JLS. Pour être explicite, vous appelleriez quelque chose comme :

Foo.createFoo();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X