2017-11-01 2 views
1

Ich habe eine Klasse sieht so aus.Wie werden doppelte Typparameter gehandhabt?

// just followed the T, U, V... 
public class Some<T...., U....> { 
} 

Und ich muss eine Instanzmethode wie folgt hinzufügen.

// not a static method 
    // just followed from BiFunction<T, U, R>.class 
    protected <U, R> R apply(final BiFunction<T, U, R> function, 
          final U u) { 

    } 

Die T des Verfahrens wird als T der Klasse gleich. Aber die U der Methode ist nicht unbedingt die gleiche wie die U der Klasse.

Sollte ich eine dieser U ändern?

Mit anderen Worten,

Sind die beiden U gleich?

+1

Fragen Sie, ob Sie einen anderen Parameternamen verwenden sollten? Idealerweise ja. Ich denke, der Compiler wird Sie warnen, wenn Sie den Klassenparameter ausblenden. – shmosel

Antwort

4

Nein gemäß den Scoping-Regeln sind diese U nicht identisch. Die U der apply Methode schattet die aus der Klasse Some. Um Verwirrung zu vermeiden, würde ich eines dieser U s umbenennen.

Verwandte Themen