Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4237046
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 21, 20262026-05-21T02:43:18+00:00 2026-05-21T02:43:18+00:00

I have a class public abstract class AbstractE<T, E extends Enum<E> & Flags> {

  • 0

I have a class

public abstract class AbstractE<T, E extends Enum<E> & Flags>
{
     public interface Flags{} /*marker interface*/
     //... 
     //other code
}

and an interface

public interface IXYZAdapter
{
   public <E extends Enum<E> & Flags> Set<E> getFlags();
}

Where Flags is an interface defined in AbstractE itself.

M extends AbstractE thus:

public class M extends AbstractE<Long, M.EF> implements IXYZAdapter
{
    public enum EF implements AbstractE.Flags{flag1, flag2}
    @Override /*from IXYZAdapter*/
    public Set<M.EF> getFlags()
    {return EnumSet.allOf(EF.class);}
    
}

Now, from the main code, I try to get a handle on the interface IXYZAdapter and invoke the getFlags method

IXYZAdapter adapter = (IXYZAdapter)m; //where m is an instance of AbstractE
Set s = adapter.getFlags();

I get the following compile time error in the main program last line (Set s = adapter.getFlags();)

invalid inferred types for E; inferred type does not conform to declared bound(s)

inferred: AbstractE.Flags

bound(s): java.lang.Enum<AbstractE.Flags>,AbstractE.Flags

What am I doing wrong?
I am using Java 6

Edited to specify the error location

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-21T02:43:19+00:00Added an answer on May 21, 2026 at 2:43 am

    Try this:

    public interface IXYZAdapter <E extends Enum<E> & AbstractE.Flags>
    {
       public Set<E> getFlags();
    }
    

    And

    public class M extends AbstractE<Long, M.EF> implements IXYZAdapter<M.EF> 
    {
    }
    

    Or

    Set<M.EF> s = adapter.getFlags();
    

    The problem is that with Set s = adapter.getFlags(); The system doesn’t know which type to infer for E in IXYZAdapter and thus the E in AbstractE doesn’t match.

    Edit:

    Another option might be:

    interface IXYZAdapter <E extends Enum<E> & AbstractE.Flags>
    {
      public Set<? extends E> getFlags();
    }
    
    class M extends AbstractE<Long, M.EF> implements IXYZAdapter<M.EF>
    {
      public enum EF implements AbstractE.Flags{flag1, flag2}
      public Set<? extends M.EF> getFlags()
      {return EnumSet.allOf(EF.class);}
    
    }
    

    And the call: Set<? extends AbstractE.Flags> s = adapter.getFlags();

    This would allow you to get a set of flags without casting and force the flags to be declared as enum.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

So, I have an abstract class like: public abstract class AbstractParent <E extends Enum<E>>
If I have a base class such that public abstract class XMLSubscription <T extends
I have the following class: public abstract class AbstractParent { static String method() {
I have an abstract class: type TInterfaceMethod = class abstract public destructor Destroy; virtual;
I have an abstract base class with a TcpClient field: public abstract class ControllerBase
I have an abstract base class and derived class: type TInterfaceMethod = class public
Suppose I have a class public class MyClass { private Set<String> set = new
I have the following class public class Car { public Name {get; set;} }
I have this class: public abstract class AbstractIncomingCall { /* class properties */ public
I have a class similar to the following: public abstract class Manager<T, TInterface> :

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.