Re[2]: Непонятки с синтаксисом
От: yvad  
Дата: 29.11.08 14:22
Оценка:
Здравствуйте, mkizub, Вы писали:

M>Никак, потому что:


M>
M>class A {}
M>class B extends A {}
    
M>class LA<T extends A> { T t; }
M>class LB<T extends B> extends LA<T> {}
M>...
M>LB<Integer> lbi = new LB<Integer>();
M>lbi.t = new Integer(0);
M>LA<Number> lan = (LA<Number>)lbi;
M>lan.t = new Double(0.0);

M>assert (lbi.t instanceof Integer);
M>


M>Ты можешь скастить только в read-only версию, то есть


M>
M>LB<Integer> lbi = new LB<Integer>();
M>lbi.t = new Integer(0);
M>LA<? extends Number> lan = lbi;
M>lan.t = new Double(0.0); // compile-time error

M>assert (lbi.t instanceof Integer);
M>


M>тогда это будет type safe.


Но позволяет LA lan = lbi;
Какой в таком случае будет T?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.