J2ME метод getDisplay () - PullRequest
       34

J2ME метод getDisplay ()

2 голосов
/ 04 марта 2012

В J2ME для создания объекта класса Display мы используем

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() в качестве параметра, поскольку это абстрактный класс.

Ответы [ 2 ]

4 голосов
/ 04 марта 2012

В коде d=Display.getDisplay(this);, это относится к текущему мидлету. Метод getDisplay() принимает один аргумент мидлета. Возьмите следующий простой пример

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
       }
    }
3 голосов
/ 04 марта 2012

Как Android говорит , this в d = Display.getDisplay (this); относится к вашему мидлету.

Но когда вы пишете следующее, вы получаете ошибки

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

Это потому, что вы пытаетесь создать мидлет по его конструктору. Вы бы увидели MIDlet doc :

защищенный мидлет () Защищенный конструктор для подклассов. Программное обеспечение для управления приложениями отвечает за создание мидлетов и создание мидлетов ограничено. Мидлеты не должны пытаться создавать другие мидлеты. Броски: SecurityException - если программное обеспечение управления приложениями не создает мидлет.

...