Java泛型类型参数隐藏
我正在定义一个类:Java泛型类型参数隐藏,java,generics,warnings,Java,Generics,Warnings,我正在定义一个类: class Foo<I extends Bar & Comparable<I>> { } 现在的问题是,如果我将内部I重新指定为J,我不确定I和J实际上是相同的类型。如果I已经在外部类中定义了,就这样做 public class Outer<I extends Bar & Comparable<I>> { public class Foo<I> { } } 公共类外部{ 公开课Foo{
class Foo<I extends Bar & Comparable<I>> {
}
现在的问题是,如果我将内部
I
重新指定为J
,我不确定I
和J
实际上是相同的类型。如果I
已经在外部类中定义了,就这样做
public class Outer<I extends Bar & Comparable<I>> {
public class Foo<I> {
}
}
公共类外部{
公开课Foo{
}
}
您不能在内部类中重新定义I
。内部类的I
将不是外部类的I
,如果这是您想要的,那么将其重命名
HTH不要将内部类参数化:
class Baz<I extends Bar & Comparable<I>> {
class Foo {
}
}
Baz类{
福班{
}
}
作为一个内部(非静态嵌套)类,
Baz
声明中定义的I
在Foo
中仍然有意义,因为每个Foo
都将有一个对其外部Baz
实例的隐式引用。为我编译-在代码的其他地方是否定义了类型I
,对我没有警告。是的,你说得对。这是一个内部类,外部类也使用I。如果我在J
中重新指定I
,那么我不能保证它们是相同的。或者?第二个I
是第一个I
。我接受这一点,因为这回答了我的问题。这可能看起来像一个老生常谈的问题,但我的问题不同,我后来发现了它。我的问题是,内部类实际上是一个内部接口。无法避免在内部接口中显式地声明类型,这会把实现内部接口的内部类的一切都搞砸。。。
class Baz<I extends Bar & Comparable<I>> {
class Foo {
}
}