| import java.io.Serializable; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| /** @noinspection UnusedDeclaration*/ |
| class GenericsTest98 { |
| public static void main(String[] args) throws Exception{ |
| List<Movable<? extends Serializable>> list = new ArrayList<Movable<? extends Serializable>> (); |
| Factory factory = Factory.newInstance(); |
| // Doesn't compile, but Idea doesn't complain |
| Mover<? extends Serializable> mover = factory.getNew<error descr="'getNew(java.util.List<? extends Movable<T>>)' in 'Factory' cannot be applied to '(java.util.List<Movable<? extends java.io.Serializable>>)'">(list)</error>; |
| } |
| } |
| |
| abstract class Factory { |
| public static Factory newInstance(){ |
| return null; |
| } |
| |
| // This should actually be |
| // public abstract <T extends Serializable> Mover<T> getNew (List<? extends Movable<? extends T>> source); |
| public abstract <T extends Serializable> Mover<T> getNew (List<? extends Movable<T>> source); |
| } |
| |
| /** @noinspection UnusedDeclaration*/ |
| interface Movable<T extends Serializable> extends Serializable { |
| } |
| |
| /** @noinspection UnusedDeclaration*/ |
| interface Mover<T extends Serializable> { |
| } |