2011-12-14 190 views
5

我定義一個類:Java泛型類型參數隱藏

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

編譯器抱怨II隱藏。我想第二次I出現在定義中隱藏在第一個範圍內,好像變量I可以分配給兩種不同的類型。如何正確地做到這一點?

編輯:

這是一個內部類。完整的代碼可以是:

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

現在的問題是,如果我重新提名內IJ,我不知道該IJ實際上是同一類型。

+4

爲我編譯 - 是否有在你的代碼中定義的其他類型的`I`? – 2011-12-14 22:30:50

+1

同樣,對我沒有警告。第三個是 – n1r3 2011-12-14 22:36:47

回答

9

不要讓內部類參數:

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

作爲內部(非靜態嵌套)類,IBaz聲明中定義仍將在Foo具有意義,因爲每個Foo將隱含引用其外部Baz實例。

3

如果I在外部類中已定義只是使這種

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

無法在內部類重新定義I。內部類的I應該是外部類的I,如果這是你想要的,那麼重命名它。

HTH