2012-03-04 51 views
2

在J2ME中創建顯示類對象,我們使用J2ME getDisplay()方法

private Display d; 
d=Display.getDisplay(this); 

什麼是this作爲參數?

我知道這是指當前實例,但是當我寫了下面的我得到的錯誤

d=Display.getDisplay(new MyClassName()); 

當我在書中看到的方法是這樣寫的下面

static Display getDisplay(MIDlet midlet) 

於是我試着這

MIDlet m; 
d=Display.getDisplay(m); 

但我得到錯誤,我甚至不能通過new MIDlet()作爲參數,因爲它是一個抽象類。

回答

3

作爲Android saysthisd = Display.getDisplay(本);引用你的MIDlet。

但是,當你寫下面你會得到錯誤

d=Display.getDisplay(new MyClassName()); 

這是因爲你試圖通過它的構造函數來創建的MIDlet。你會看到MIDlet doc

保護的MIDlet() 子類受保護的構造。應用程序管理軟件負責創建MIDlet,並且限制了MIDlet 的創建。 MIDlet不應嘗試創建其他MIDlet。 拋出: SecurityException - 除非應用程序管理軟件正在創建MIDlet。

4

在代碼d=Display.getDisplay(this);,這個指的是當前Midlet。方法getDisplay()需要一個midlet參數。看看下面的簡單例子

public class MyMidlet extends Midlet 
{ 
    private Display display; 

    public MyMidlet() 
    { 
     display = Display.getDisplay(this); // Here this refers to the current class's Midlet 
    } 
} 

現在,假設你有正常的類文件,如下圖所示,

public class MyClass 
{ 
    private Display display; 
    Midlet m; 

    public MyClass() 
    { 
     display = Display.getDisplay(m); // You can not do this directly. 
    } 
} 

,如果你想在上面的場景,那麼你可能需要改變你的代碼的一些怎麼樣的下方, 假設你有兩個班級在同一個包裏。

// Midlet Class 
    public class MyMidlet extends Midlet 
    { 
     private MyClass mycls; 
     public void myMethod() 
     { 
      mycls = MyClass(this); // Passing Midlet reference to MyClass's constructor. 
     } 
     .... 
     .... 
     .... 
    } 


// another class file 
    public class MyClass 
    { 
     private Display display; 
     Midlet m; 

     public MyClass(Midlet m) 
     { 
     this.m = m; 
     display = Dispaly.getDisplay(m); // Now it will work 
     } 
    } 
+0

@Android ----我只有一個類擴展MIDlet(即我沒有一個普通的類),我想問有沒有什麼方法可以替換「this」作爲參數getDisplay()方法。在你的例子中,你使用了兩個不屬於我的例子。 – 2012-03-04 07:15:08