2013-01-10 26 views
3

以下代碼:javac的「使用未經檢查或不安全的操作」時,被指定的類型

public void addGrillaListener(Stage stageToClose,Grilla listener) 
{ 
    GrillaHandler<WindowEvent> handy = new GrillaHandler<>(listener); 
    if(stageToClose!=null) 
    { 
     stageToClose.addEventHandler(WindowEvent.WINDOW_HIDDEN,handy); 
    } 
} 

導致編譯器來顯示該消息。我怎樣才能避免它?

額外的信息:

  • 格里拉是Stage界面
  • GrillaHandler是一個事件處理程序子類,它需要一個格里拉作爲構造參數
  • 使用JDK 7,GrillaHandler <>允許
  • 的編譯器的消息是相當unespecific - 它指出,此方法使用未經檢查或不安全的操作
  • 舞臺是Oracle提供的一個類,它是

GrillaHandler的JavaFX的一部分:

public class GrillaHandler<T> implements EventHandler { 

    private Grilla win; 

    public GrillaHandler(Grilla win) { 
     this.win=win; 
    } 

    @Override 
    public void handle(Event t) { 
     win.loadTable(); 
    } 
} 

格里拉:

public interface Grilla { 
    public void loadTable(); 
} 
+2

顯示在該行中的信息? –

+2

對我來說,問題出現在參數'Stage stageToClose'中。它看起來像是一個參數化類型,以便稍後可以接受特定類型的事件處理程序。但是在你的代碼中並不明顯。你可以發佈'Stage'和'Grilla'的定義嗎? –

+1

GrillaHandler 得心應手=新GrillaHandler (受聽者); – Deepak

回答

5

更改代碼

public class GrillaHandler<T extends Event> implements EventHandler<T>{ 
//... 
} 

JavaFX的EventHandler是paremeterized類型。您在GrillaHandler的聲明中遺漏了那一個。您必須在您的類聲明中提供類型參數,或者重新聲明類型參數,因爲您似乎需要按照您的聲明。

+1

+1尼斯偵探的申報工作給予!投票移動已經過去,這太糟糕了。 –

+0

Niceeeee!我在稍後嘗試 – Alvaro

相關問題