Basically I want to do this:
public interface A { void a(); } public interface B { void b(); } public class SomeClass { public SomeClass(<A&B> e) { // Note the type here e.a(); e.b(); } }
What I did on the commented line is obviously illegal. I know I can just require the passed object to implement interface A, or interface B, but is there a way to do both?
I guess there are workarounds (like requiring the parameter to be of type A and then check if it is also an instanceof B), but that way I don’t get help from the compiler. Do you know of any way to do this? Or maybe a smarter workaround…
You can do it with generics enabled. For example, to accept an instance of some class that implements both CharSequence and Appendable: