确保输入参数满足多个类型条件

时间:2013-09-16 01:41:14

标签: java generics types

我有两个接口,A和B.我正在编写一个函数,我希望它只接受使用这两个接口的对象。这是我一直在尝试的一些事情。我希望我的问题很明确。

    public void function((? implements A,B) thing) {
        // do things
    }

    public <T extends A, T extends B> void function(T thing) {
        // do things
    }

    public <T extends A,B> void function(T thing) {
        // do things
    }

这些尝试都没有奏效。提前感谢您对此的任何见解。

1 个答案:

答案 0 :(得分:1)

您可以尝试创建一个从A&amp; B并将其用作方法标记...

public interface C extends A, B {
}

然后你只需要担心C ...

public <T extends C> void function(T thing) {
    // do things
}

这确实意味着任何调用该方法的人都必须实现C而不仅仅是AB,但它应该让你跨越这一行......

那是......

public class MyAB implements A, B {
}

无法传递给functionMyAB必须实施C