Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #29190
| From | Philipp Kraus <philipp.kraus@flashpixx.de> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: generic extends problem |
| Date | 2014-07-22 14:54 +0200 |
| Organization | Clausthal University of Technology |
| Message-ID | <lqlmtg$23bj$1@ariadne.rz.tu-clausthal.de> (permalink) |
| References | <lpg2q5$2ued$1@ariadne.rz.tu-clausthal.de> <lpgnqe$27q$1@dont-email.me> |
On 2014-07-08 12:22:29 +0000, Eric Sosman said:
> On 7/8/2014 2:24 AM, Philipp Kraus wrote:
>> Hello,
>>
>> I have got a complex class structure, the signature of the class is:
>>
>> public abstract class IMultiLayer<T extends IStepable & Painter> extends
>> CompoundPainter<T> implements IQueue<T>, IViewableLayer, IDataLayer,
>> IVoidStepable, ILayer
>>
>> The interfaces are defined like
>>
>> interface IDataLayer;
>> interface IStepable;
>> interface IViewableLayer;
>>
>> interface IVoidStepable extends IStepable;
>> interface IReturnStepable extends IStepable;
>> interface ILayer extends IStepable;
>> interface IQueue<T> extends Queue<T>
>>
>>
>> I create classes with
>>
>> public class myContent implements IStepable, Painter
>>
>> public class myLayer extends IMultiLayer<myContent>
>>
>> I can compile the structure with Java 1.8, but I get an
>> ClassCastException. I have defined a Map
>> with
>>
>> Map<String, ILayer> x = new Map();
>> x.put( "test", new myLayer )
>> (myLayer) x.get("test"); // the exception is raised on the cast
>>
>> The message text of the exception is: cannot be cast to IStepable.
>> I don't understand way the exception is thrown, because the class
>> implements the correct interface.
>> If I swap T extends IStepable & Painter to T extends Painter &
>> IStepable, I get the same exception with
>> cannot be cast to Painter
>>
>> I'm a little bite clueless and need a hint to solve the problem
>
> Could you post some actual code, instead of paraphrasing?
> What you've shown cannot possibly be what you're actually running
> ("new Map()", "new myLayer" with no parens, ...)
>
> See <http://sscce.org/>.
Sorry for the late answer, but the structure was quite right, but my
cached Java classes
are exists in an older version. I habe removed the cache and recompile
the whole project
and everything works fine
Phil
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Find similar | Unroll thread
generic extends problem Philipp Kraus <philipp.kraus@flashpixx.de> - 2014-07-08 08:24 +0200
Re: generic extends problem Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-07-08 08:22 -0400
Re: generic extends problem Philipp Kraus <philipp.kraus@flashpixx.de> - 2014-07-22 14:54 +0200
csiph-web