Namenssuche Typ-Argumente eines Konstruktors

19/05/2015 - 00:36 von Heiner K | Report spam
Folgender Konstruktor-Aufruf ist möglich:

public class ConstructorWithTypeparam<T_CLASS>
{
/**
* Konstruktor.
*/
public <T_CONSTRUCTOR> ConstructorWithTypeparam(
final T_CONSTRUCTOR t )
{
}

void main()
{
ConstructorWithTypeparam_1<Number> instance new <String>ConstructorWithTypeparam_1<Number>(
"str" );
}

}

Der Konstruktor hat zwei Arten von Typ-Argumenten

<String> linke Seite, Type-Argument des Konstruktors

<Number> rechte Seite, Type-Argument der Klasse

Ich weiss nun leider nicht,
wie ich diese beiden Typ-Argumente
(es könnten auch mehrere sein,
also Typ-Argument-Listen)
nennen soll.


In der JLS

https://docs.oracle.com/javase/spec...l#jls-15.9

wird bei diesen beiden Arten der Typ-Argumente nicht unterschieden.

Hier wird lediglich die Grammatik notiert.


In

https://docs.oracle.com/javase/spec...jls-15.9.3

steht

Let c1...cn be the constructors of class C. Let #m be an automatically generated name that is distinct from all constructor and method names in C. For all j (1 ≤ j ≤ n), mj is defined in terms of cj as follows:


Let F1...Fp be the type parameters of C, and let G1...Gq be the type parameters (if any) of cj. Let X1...Xp and Y1...Yq be type variables with distinct names that are not in scope in the body of C.

θj is [F1:=X1, ..., Fp:=Xp, G1:=Y1, ..., Gq:=Yq].


G1...Gq sind die linken Typ-Argumente


F1...Fp sind die rechten Typ-Argumente


Also könnten scheinbar die linken Typ-Argumente

Konstruktor-Typ-Argumente

und die rechten Typ-Argumente

Klassen-Typ-Argumente

heissen?


Bei Methoden gibt es auch die Variante
mit den linken Typ-Argumenten,
meist bei statischen Methoden

In der JLS

https://docs.oracle.com/javase/spec...#jls-15.12

heissen die einfach TypeArguments


Dort würde dann die Bezeichnung

Methoden-Typ-Argumente

zutreffen?


Vielen Dank
Heiner
 

Lesen sie die antworten

#1 Patrick Roemer
19/05/2015 - 11:54 | Warnen spam
Responding to Heiner Kücker:
void main()
{
ConstructorWithTypeparam_1<Number> instance > new <String>ConstructorWithTypeparam_1<Number>(
"str" );
}

Der Konstruktor hat zwei Arten von Typ-Argumenten

<String> linke Seite, Type-Argument des Konstruktors

<Number> rechte Seite, Type-Argument der Klasse

Ich weiss nun leider nicht,
wie ich diese beiden Typ-Argumente
(es könnten auch mehrere sein,
also Typ-Argument-Listen)
nennen soll.



Ich verstehe das Problem nicht recht. Die Typ-Parameter eines
Konstruktors wuerde ich in der Tat einfach "Typ-Parameter eines
Konstruktors" nennen - "Konstruktor-Typ-Parameter" ginge natuerlich
auch, empfinde ich nur subjektiv etwas unschoener.

"Typ-Argumente eines Konstruktors" wuerde ich durchgehen lassen, faende
das aber etwas unscharf, weil sich das ja nicht auf den Konstruktor an
sich, sondern nur auf einen konkreten Aufruf bezieht. Praeziser waere
"Typ-Argumente des Konstruktoraufrufs".

Dasselbe analog fuer Klasse, Methode,...

In der JLS z.B.:

"class's type parameter", "constructor's type parameter"
https://docs.oracle.com/javase/spec...ml#jls-6.3

"constructor type argument list"
https://docs.oracle.com/javase/spec...l#jls-15.9

Viele Gruesse,
Patrick

Ähnliche fragen