[英]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();
}
我不相信有一种方法可以使用泛型,因为X
和Y
之间没有关系,因此它们一开始就无法通过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.