Typ ogólny utracony dla elementu typu raw

Znalazłem dziwne zachowanie podczas pracy z generykami.

W tej klasieFoo<T>, thestrings członek nie ma z tym nic wspólnegoT:

package test;
import java.util.ArrayList;

public class Foo<T> {
    ArrayList<String> strings;

    T getSome() {
        return null;
    }
}

Klasa jest używana w main:

package test;

public class Main {

    public static void main() {
        Foo<Integer> intFoo = new Foo<>();
        Integer i = intFoo.getSome();
        String s1 = intFoo.strings.get(0);

        Foo rawFoo = new Foo();
        Object o = rawFoo.getSome();
        String s2 = rawFoo.strings.get(0); // Compilation error on this line
    }
}

Błąd kompilacji to „typy niezgodne. Wymagane: Znaleziono ciąg: Obiekt”.

Wygląda na to, że Java zapominaString wpisz argument doArrayList kiedy surowy typFoo jest używany.

Moja wersja java to 1.7.0_21

questionAnswers(1)

yourAnswerToTheQuestion