Java中C++可变参数模板的等价物

Aar*_*kan 6 java

我希望用Java编写泛型类安全观察器.在C++中,我可以通过使用c ++ 11中的variadic模板轻松完成,如下所示:

class Observer<typename... T>
{
    void update(T... args);
};
Run Code Online (Sandbox Code Playgroud)

现在,在java中,我能做的最好的事情是:

class Observer<T>
    {
        void update(T args);
    };
Run Code Online (Sandbox Code Playgroud)

现在,update不能像C++那样采用不同类型的多个参数.有人可以建议解决这个问题吗?

提前致谢.

Luk*_*ler 4

如果所有参数都扩展/实现 T 你可以说:

class Observer<T>{
        void update(List<? extends T> args){}
}
Run Code Online (Sandbox Code Playgroud)

  • 这将只允许 `List&lt;T&gt;` 而不是子类型。例如,“T”是“Number”;此构造不允许“List&lt;Integer&gt;”作为参数。我会说“列表&lt;?扩展 T&gt;` 会更合适。 (4认同)