Java泛型类型参数隐藏

mar*_*ssi 5 java generics warnings

我正在定义一个类:

class Foo<I extends Bar & Comparable<I>> {
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨I被隐藏I.我想第二次I出现在定义中是隐藏在第一个范围内,好像变量I可以分配给两种不同的类型.怎么做正确?

编辑:

这是一个内在阶级.完整的代码可以是:

class Baz<I> {
    class Foo<I extends Bar & Comparable<I>> {
    }
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,如果我重新提名内IJ,我不知道这IJ实际上是同一类型.

Pau*_*ora 9

不要使内部类参数化:

class Baz<I extends Bar & Comparable<I>> {
   class Foo {
   }
}
Run Code Online (Sandbox Code Playgroud)

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