4

So i have a bunch of enum's that all extend an interface:

public interface MyInterface {}

I then have several enums that extend the interface:

public enum A implements MyInterface {}

public enum B implements MyInterface {}

I want a function that will accept only enum's that extend this interface. I cannot do:

public void MyFunction(MyInterface input)

because, inside the function, I create an EnumSet using EnumSet.of(input). I cannod do

public <T extends Enum<T>> void myFunction(T input)

because, inside the function, I need to create a Map that needs to be passed to another function. So is there any type-safe way to do this w/o casting?

Edit: Corrected interface definitions.

1
  • 4
    That should be enum A implements MyInterface Commented Feb 11, 2014 at 16:43

1 Answer 1

13

You can give multiple bounds to your type parameter:

public <T extends Enum<T> & MyInterface> void myFunction(T input)

Note: You're missing return type of the method. I've given void here. Change accordingly. Oh! And please follow Java naming conventions. Method name should start with lowercase letters.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.