Проблема с типизацией при наследовании.
От: Аноним  
Дата: 17.01.08 10:17
Оценка:
Помогите пожалуйста с ответом на вопрос почему не компилирутся следующий код

import java.util.Set;

public class FirstClass<T> {
  private T _field;
  private Set<Integer> _ints;

  public T getField() {
    return _field;
  }

  public Set<Integer> getInts() {
    return _ints;
  }
}

class SecondClass extends FirstClass{

  public void sameMetod(){
    for (Integer intVar : getInts()) {   /// проблемная строка
       // do samething
    }
  }
}


Проблема заключается в том, что компилятор жалуется на intVar и не видит что метод типизирован.

Error:Error:line (25)incompatible types
found : java.lang.Object
required: java.lang.Integer


Но если указать типизацию при наследовании то проблема исчезает и код начинает компилироваться при объявлении SecondClass следующим образом :

class SecondClass extends FirstClass<Object>{


Почему так происходит непонятно, помогите ПЛЗ.

PS К сожалению самостоятельный поиск и опрос окружающих девелоперов ответа не дал((((
Re: Проблема с типизацией при наследовании.
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 17.01.08 11:22
Оценка:
Здравствуйте, Аноним, Вы писали:

А>...

А>Проблема заключается в том, что компилятор жалуется на intVar и не видит что метод типизирован.

А>...


А>Но если указать типизацию при наследовании то проблема исчезает и код начинает компилироваться при объявлении SecondClass следующим образом :


А>...

А>Почему так происходит непонятно, помогите ПЛЗ.

А>PS К сожалению самостоятельный поиск и опрос окружающих девелоперов ответа не дал((((


здесь
Автор: Марсель абый
Дата: 08.11.07

Keywords: raw types and erasure
http://denis-zhdanov.blogspot.com
Re[2]: Проблема с типизацией при наследовании.
От: Аноним  
Дата: 17.01.08 14:10
Оценка:
Здравствуйте, denis.zhdanov, Вы писали:

DZ>здесь
Автор: Марсель абый
Дата: 08.11.07

DZ>Keywords: raw types and erasure

К сожалению просмотрев сообщения темы досканально все не понял, но в подсознании отложилось, что если не объявить тип то придет грозный erasure и все папец.

Но все равно спасибо за ответ)! теперь хоть ясно в каком направлении дальше копать)
Re[3]: Проблема с типизацией при наследовании.
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 17.01.08 14:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>К сожалению просмотрев сообщения темы досканально все не понял, но в подсознании отложилось, что если не объявить тип то придет грозный erasure и все папец.


Так чего ж ты, там есть сцылка туда
Автор: bolshik
Дата: 21.08.06
, оттуда сюда а тут уж цитата

All members, regardless of their dependence of type parameters, are erased.
So the compiler is correct, the method call is unchecked.



А>Но все равно спасибо за ответ)! теперь хоть ясно в каком направлении дальше копать)


Пожалуйста, а копать там уже нечего.
http://denis-zhdanov.blogspot.com
Re: Проблема с типизацией при наследовании.
От: Аноним  
Дата: 17.01.08 14:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Помогите пожалуйста с ответом на вопрос почему не компилирутся следующий код


А>class SecondClass extends FirstClass{


А> public void sameMetod(){

А> for (Integer intVar : getInts()) { /// проблемная строка
А> // do samething
А> }
А> }
А>}
А>[/code]


class SecondClass<T> extends FirstClass<T>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.