2015-11-07 35 views
0

我試圖創建一個有界類型參數的接口,以實現提供靜態的嵌套類來實現這個參數,如下所示:使用靜態嵌套類作爲泛型參數

public interface InterfaceProblem<T extends IMyParameter>{ 
    T getParameterInstance(); 
} 

interface IMyParameter {} 

class MyClass implements InterfaceProblem<MyParameter> { 
    public MyParameter getParameterInstance() { 
     return new MyParameter(); 
    } 

    class MyParameter implements IMyParameter{} 
} 

這給了我一個編譯在MyClass聲明及其方法上出現錯誤「MyParameter無法解析爲類型」。

class MyClass implements InterfaceProblem<MyParameter> { 
    public MyParameter getParameterInstance() { 
     return new MyParameter(); 
    } 
} 

class MyParameter implements IMyParameter{} 

不過,我想避免這種情況,因爲MyParameter實施密切相關的MyClass的實現:如果我將靜態類自身的類型此消失。有沒有更好的辦法可以實現這個目標?這是正確的編譯器行爲? (我使用Eclipse火星和Oracle jdk1.8.0_60)

+0

'靜態內部'是一個矛盾的詞彙。這是一個靜態嵌套類。 – EJP

回答

1

你缺少一個導入:

import com.example.MyClass.MyParameter; 

雖然MyParameter類型是範圍爲getParameterInstance()方法的返回類型,它不是MyClass的結合<T>