代码之家  ›  专栏  ›  技术社区  ›  Sandro

返回给定子类实例的方法的通用签名是什么?

  •  4
  • Sandro  · 技术社区  · 16 年前

    基本上,我想创建一个具有如下签名的方法:

    public <T> T getShellTab(Class<T extends ShellTab> shellTabClass)
    

    但这不是有效的Java。
    我希望能够传递一个类,该类是 ShellTab 并返回该类的一个实例。

    public <T> T getShellTab(Class<T> shellTabClass)
    

    很好,但我想强制 shellTabClass 作为 贝尔塔 .

    有什么关于如何实现这个的想法吗?

    谢谢您。

    2 回复  |  直到 16 年前
        1
  •  12
  •   Community CDub    8 年前

    将约束放入初始泛型参数中,如下所示:

    public <T extends ShellTab> T getShellTab(Class<T> shellTabClass)
    

    注意,您可以对方法参数的泛型类型参数(例如, Tom Hawtin - tackline 建议制作 shellTabClass 变成一个 Class<? extends T> 尽管我认为在这种情况下没有什么不同)。
    但不能约束已经声明的类型。

        2
  •  3
  •   Chris Kent    16 年前

    这个怎么样?

    public <T extends ShellTab> T getShellTab(Class<T> shellTabClass)