Java 泛型类型参数隐藏

发布于 2024-12-21 01:41:19 字数 496 浏览 0 评论 0原文

我正在定义一个类:

class Foo<I extends Bar & Comparable<I>> {
}

编译器抱怨 II 隐藏。我猜想第二次出现在定义中的 I 隐藏在第一次的作用域中,就好像变量 I 可以分配给两种不同的类型。如何正确做呢?

编辑:

这是一个内部类。完整的代码可以是:

class Baz<I> {
    class Foo<I extends Bar & Comparable<I>> {
    }
}

现在的问题是,如果我将内部 I 重新指定为 J,我不确定 IJ 实际上是相同的类型。

I'm defining a class:

class Foo<I extends Bar & Comparable<I>> {
}

the compiler is complaining about I being hidden by I. I guess the second time I appears in the definition is hiding in scope the first one, as if variable I could be assigned to two different types. How to do it correctly?

Edit:

this is an inner class. the full code can be:

class Baz<I> {
    class Foo<I extends Bar & Comparable<I>> {
    }
}

now the problem is that if I re-nominate inner I to J, i'm not sure that I and J are actually the same types.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

野味少女 2024-12-28 01:41:19

不要使内部类参数化:

class Baz<I extends Bar & Comparable<I>> {
   class Foo {
   }
}

作为一个内部(非静态嵌套)类,Baz 声明中定义的 IFoo 中仍然有意义,因为每个 Foo 都会有一个对其外部 Baz 实例的隐式引用。

Don't make the inner class parameterized:

class Baz<I extends Bar & Comparable<I>> {
   class Foo {
   }
}

As an inner (non-static nested) class, I as defined in the Baz declaration will still have meaning in Foo, since every Foo will have an implicit reference to its outer Baz instance.

尛丟丟 2024-12-28 01:41:19

如果 I 已在外部类中定义,则只需执行此操作即可

public class Outer<I extends Bar & Comparable<I>> {
  public class Foo<I> {
  } 
}

。您无法在内部类中重新定义 I 。内部类的 I 可能与外部类的 I 不同,如果这是您想要的,那么,重命名它。

华泰

If I is already defined in the outer class just make this

public class Outer<I extends Bar & Comparable<I>> {
  public class Foo<I> {
  } 
}

You cannot redefine I in your inner class. The I of the inner class would be something else than the I of the outer class, if this is what you want, well, rename it.

HTH

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文