Class<? extends Integer>
będzie kompilowany dobrze, ale Integer
jest ostatecznym typem, więc nie ma sensu używać go jako górnej granicy (nic nie będzie kiedykolwiek extend
).Symbol wieloznaczny z górną granicą ostateczną
Jeśli spróbujesz użyć ostatecznej typ jako górną granicę dla parametru typu, otrzymasz ostrzeżenie kompilatora:
Parametr typu T nie powinna być ograniczona przez końcowego typu Integer. rodzaje końcowe nie mogą być dodatkowo rozszerzony
Dlaczego przy użyciu ostatecznej typ jako górną granicę dla wieloznaczny być idealnie czysty, ale rzucać ostrzeżenie dla parametru typu? Dlaczego Java pozwala nawet na ograniczanie symboli wieloznacznych końcowym górnym typem?
Wydaje mi się, że kompilator mógł sam dojść do tego, że 'Klasa extends Integer> 'zwrócony z twojego drugiego przykładu jest zgodny z' Class ', ponieważ' Integer' jest ostateczny. Ale przypuszczam, że kompilator byłby bardziej skomplikowany niż jego wartość. Może ostrzeżenie jest specyficzne dla Eclipse: Eclipse Juno w/JDT 3.8.0. –
Jeffrey