繁体   English   中英

如何在Java中指定泛型类的内部类?

[英]How specify an inner class of a generic class in Java?

我有下面的代码工作正常:

class ingen
{
  static class X
  {
    static class inner {}
    static class A extends inner {}
    static class B extends inner {}
  }

  static class Y
  {
    static class inner {}
    static class A extends inner {}
    static class B extends inner {}
  }

  X makeX (X.inner ... inner)
  {
    return new X();
  }

  Y makeY (Y.inner ... inner)
  {
    return new Y();
  }
}

现在,我想为make方法编写一个泛型。 但是我找不到一种方法来指定泛型类的内部类。 我试过了,但是无法编译:

  <T> T make (T.inner ... inner)

有没有办法写这个泛型?

为什么不只是超载make

X make(X.inner... inner) {
    return new X();
}

Y make(Y.inner... inner) {
    return new Y();
}

我不相信有一种方法可以使用泛型,因为XY之间没有关系,因此它们一开始就无法通过singe类型参数进行统一(尽管即使它们相互关联)由于inner是静态的,因此无法实现)。


如果您选择稍微重新设计课程,则可以尝试以下操作:

class Base {
    class inner {
    }
}

class X extends Base {
    class A extends inner {
    }

    class B extends inner {
    }
}

class Y extends Base {
    class A extends inner {
    }

    class B extends inner {
    }
}

<T extends Base> Base make(T.inner... inner) {
    ...
}

尽管我会花点时间退后一步,然后考虑一下这是否真的是您想要做的。 它看起来很复杂,也许有一个更简单的解决方案?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM