gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:13:34 25 4
gpt4 key购买 nike

我有以下代码可以正常工作:

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 之间没有关系,所以它们不能统一首先是一个单一的类型参数(尽管即使它们是相关的,它仍然是不可能的,因为 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) {
...
}

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

关于java - 如何在 Java 中指定泛型类的内部类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19321706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com