Инициализировать объект - PullRequest
0 голосов
/ 05 марта 2012

Продолжение с: Это мой вопрос

Так что теперь я могу использовать этот код:

Window a = getWindow();
    a.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

Вместо этого кода:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

И некоторые из моих старших сказали, что из-за метода getWindow();, возвращающего объект Window, мы можем использовать оба кода выше.Мой вопрос: почему мы должны получить возвращенный объект Window из этого кода: Window a = getWindow();

Я думаю, что когда я делаю это, у меня уже есть объект Window

Window a;

Но почемуон не работает?

И мой второй вопрос: почему я не могу сделать так:

Window a = new Window();

Я думаю, что это тоже создает объект Window.

Почему долженЯ использую метод getWindow();?

Спасибо всем

PS: английский не мой родной язык, поэтому извините, если я сделал несколько ошибок

Ответы [ 3 ]

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

Я предполагаю, что Java здесь:

Window a;

не создает новый объект Window, он только создает переменную, которая может содержать объект типа Window.Чтобы создать сам объект - вам нужно вызвать его конструктор, в вашем случае - я предполагаю, что getWindow() делает.

Кроме того, new Window является синтаксической ошибкой - конструкторы в Java вызываются аналогично методам[с () и соответствующими аргументами, если они есть].

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

Вы можете создать объект, используя его конструктор. Конструктор - это метод.
Window a = new Window; является синтаксической ошибкой в ​​Java. И вы не можете использовать a после Window a;, потому что в Java вы должны инициализировать переменную перед ее использованием.
Вы можете написать ручкой, просто представляя об этом? ты должен сначала купить эту ручку, не так ли?
Window a = new Window();
это будет работать нормально, если вы напишите вместо Window a = new Window;

1 голос
/ 05 марта 2012

Думайте об этом так. Вы занимаетесь объектным ориентированным программированием, верно? Вы можете иметь несколько экземпляров объекта, но это не одно и то же.

Когда вы используете getWindow (), вы получаете конкретное окно. Когда вы просто делаете

Window a; //This will return null since the reference for some window object is created but currently points to null

или

Window a = new Window(ctx); //A window object reference is created which points to some new Window object in memory.

Вы ссылаетесь на окно , но не окно , которое вы собираетесь использовать.

Надеюсь, это прояснит ситуацию. Пожалуйста, как будто у вас есть дополнительные вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...