Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!gegeweb.org!aioe.org!.POSTED!not-for-mail From: Steven Simpson Newsgroups: comp.lang.java.programmer Subject: Re: Hairy generics question Date: Wed, 22 Feb 2012 08:31:58 +0000 Organization: Aioe.org NNTP Server Lines: 91 Message-ID: References: <3c65271e-a388-49c9-bcc6-ca3bf274e74f@e27g2000vbu.googlegroups.com> NNTP-Posting-Host: SYma/1Oij9bhI+errvtPhg.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2 X-Notice: Filtered by postfilter v. 0.8.2 Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:12248 On 22/02/12 02:04, Daniel Pitts wrote: > I think what you'll need to do is have generic parameter to CompA: > > public class CompA CompA, View>> extends CompItem, View> I think you then have to do the same for your AInfo, with corresponding changes to CompA's declaration: class CompA, CompA, View>> extends CompItem, CompA, View> { } class AInfo, CompA, View>> extends CompItemInfo, CompA, View> { } For the interested, here's an SSCCE, with CompC as the special case, and CompA and CompB defined as before (and a few bits guessed): interface CompWidget { } class CompItemInfo , P extends AbstractCompItem, V extends CompItemViewInterface> { } interface CompItemViewInterface , P extends AbstractCompItem, V extends CompItemViewInterface> { } abstract class AbstractCompItem , P extends AbstractCompItem, V extends CompItemViewInterface> { } abstract class CompItem , P extends AbstractCompItem, V extends CompItemViewInterface> extends AbstractCompItem implements CompWidget { } class CompItemView , P extends AbstractCompItem, V extends CompItemViewInterface> extends AbstractCompItemView implements CompItemViewInterface { } abstract class AbstractCompItemView , P extends AbstractCompItem, V extends CompItemViewInterface> { } class CompA extends CompItem { } class AInfo extends CompItemInfo { } class CompAView implements CompItemViewInterface { } class CompB extends CompItem { } class BInfo extends CompItemInfo { } class CompBView implements CompItemViewInterface { } class CompC, CompC, View>> extends CompItem, CompC, View> { } class CInfo, CompC, View>> extends CompItemInfo, CompC, View> { } -- ss at comp dot lancs dot ac dot uk