2017-08-19 18 views
0

J'ai vu une ligne de code où je ne sais pas à quoi ressemble la signature de cette méthode. J'ai cherché en ligne quelques exemples et une explication, mais je n'en ai pas trouvé.Signature de la méthode avec 'new Class()' comme paramètre

La ligne de code:

Circle sum = Circle.add(new Circle(), new Circle()); 

Je me demandais comment la signature de la méthode add ressemblerait avec le « nouveau Cercle() » en tant que paramètre.

Répondre

4

Sans connaître cette API, vous pouvez utiliser les conseils suivants:

  • Cette méthode reçoit deux paramètres (ou plus ...) des types Circle et retourne un objet de type Circle.
  • La méthode est accessible par le Circle.add(...), il doit donc être une méthode static

Ainsi, la signature de cette méthode ressemble à quelque chose comme:

public static Circle add(Circle c1, Circle c2); 

ou

public static Circle add(Circle... circles); 

(le modificateur d'accès de la méthode peut être différent de public)

+2

Je suppose que c'est statique, mais sinon cela. Une explication de pourquoi serait bien cependant. – user2478398

+1

@ user2478398 merci, vous avez raison, j'ai manqué la façon dont cette méthode est accessible. J'ai mis à jour la réponse. –

+1

Je l'ai également mis à jour pour inclure @YCF_L utilisation de varargs, dans le cas où plus de deux 'Circles' sont autorisés –

1

Signature est peut-être:

add(Circle, Circle) 

new Circle() est sans appel params constructeur.

1

Parce qu'il prend même objet Circle objet, je suggère aussi qu'il peut prendre une array de Circle et retourner un Circle objet à la fin comme ceci:

public class Circle{ 

    public Circle() { 
    } 

    public static Circle add(Circle...circles){ 
     Circle c = ...; 
     //do soemthing 
     return c; 
    } 
} 

Ou simplement votre conscructor de classe peut prendre deux Circle comme cela:

public class Circle{ 

    public static Circle add(Circle c1, Circle c2){ 
     Circle c = ...; 
     //do soemthing 
     return c; 
    } 
}