Feldzuweisungen mit Wildcards ausschließen #351

Open
opened 2024-11-12 12:26:04 +00:00 by pl · 0 comments
Owner

Wenn man einen Feld mit Wildcardtyp einen Wert zuordnet, kann es zu unsoundness führen (vgl. Bsp.).
Dieses muss man ausschließen.

class Main {
    <T> void append(List<T> l1, List<T> l2) {
      while (!(l1 == null)) l1 = l1.rest;
      l1.rest = l2;
    }

  void m() {
    List<String> ls = null;
    List<Integer> li = null;

    List<?> l1 = ls;
    List<?> l2 = li;
    append(l1, l2);


    ls.getLastElement(); // würde jetzt einen Integer Wert liefern, obwohl ls eine Liste von Strings ist

  }
}
Wenn man einen Feld mit Wildcardtyp einen Wert zuordnet, kann es zu unsoundness führen (vgl. Bsp.). Dieses muss man ausschließen. ```java class Main { <T> void append(List<T> l1, List<T> l2) { while (!(l1 == null)) l1 = l1.rest; l1.rest = l2; } void m() { List<String> ls = null; List<Integer> li = null; List<?> l1 = ls; List<?> l2 = li; append(l1, l2); ls.getLastElement(); // würde jetzt einen Integer Wert liefern, obwohl ls eine Liste von Strings ist } } ```
dholle was assigned by pl 2024-11-12 12:38:06 +00:00
pl self-assigned this 2024-11-12 12:38:06 +00:00
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#351
No description provided.