Lokale Variablen müssen bei Überladung beachtet werden #152

Open
opened 2020-02-08 10:33:57 +00:00 by pl · 1 comment
Owner
No description provided.
Author
Owner

OverloadingTIMain.jav:

import java.util.Vector;
import java.util.Stack;

class OverloadingTIMain {
void main() {
var v;
new O1().mm(v);
}
}

mit O1.java:

import java.util.Vector;
import java.util.Stack;

public class O1 {

public <T> String mm(Stack<T> x) { return "S"; }
  
  public <T> String mm(Vector<T> x) { return "V"; }

}

liefert

class OverloadingTIMain {

void main()({
TPH K v;
(new O1().mm((v)::TPH K))::TPH M;
return;
})::TPH O

OverloadingTIMain()({
super(());
})::TPH R

RESULT Final: [
[(TPH L = java.util.Vector), (TPH M = java.lang.String), (TPH N = O1), (TPH MDI, TPH MDH), (TPH K = java.util.Vector)],
[(TPH L = java.util.Stack), (TPH N = O1), (TPH MDK, TPH MDJ), (TPH K = ? extends java.util.Stack), (TPH M = java.lang.String)]]

Das heißt K steuert welche mm-Methode ausgewählt wird. main() wäre mehrdeutig. Es sollte für die Variable v möglich sein einen Typ auszuwählen.

OverloadingTIMain.jav: import java.util.Vector; import java.util.Stack; class OverloadingTIMain { void main() { var v; new O1().mm(v); } } mit O1.java: import java.util.Vector; import java.util.Stack; public class O1 { public <T> String mm(Stack<T> x) { return "S"; } public <T> String mm(Vector<T> x) { return "V"; } } liefert class OverloadingTIMain { void main()({ TPH K v; (new O1().mm((v)::TPH K))::TPH M; return; })::TPH O OverloadingTIMain()({ super(()); })::TPH R RESULT Final: [ [(TPH L = java.util.Vector<TPH MDH>), (TPH M = java.lang.String), (TPH N = O1), (TPH MDI, TPH MDH), (TPH K = java.util.Vector<TPH MDH>)], [(TPH L = java.util.Stack<TPH MDJ>), (TPH N = O1), (TPH MDK, TPH MDJ), (TPH K = ? extends java.util.Stack<TPH MDJ>), (TPH M = java.lang.String)]] Das heißt K steuert welche mm-Methode ausgewählt wird. main() wäre mehrdeutig. Es sollte für die Variable v möglich sein einen Typ auszuwählen.
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: JavaTX/JavaCompilerCore#152
No description provided.