2012-03-05 9 views
0

Contiuned от: This is my questionИнициализировать объект

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

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 a; 

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

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

Window a = new Window(); 

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

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

Спасибо всем

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

+1

[Type] Window [name] a [присваивание] = [inovakation] getWindow(), getWindow() возвращает окно, объявляя тип, который вы даете компилятору узнать, какая переменная будет –

+1

Если вы пишете как Window a ; он вернет экземпляр окна. Окно a = getWindow(); вернет вам текущее окно текущего действия. Когда вы меняете свойства текущего окна, вы должны сначала получить текущее окно существующей активности. –

ответ

4

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

Window a; 

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

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

+0

Спасибо, сэр, да, я имею в виду новый Window(); : D Но как получилось getWindow(); стать конструктором из класса Window? Я думаю, что все конструкторы в Java должны иметь то же имя, что и класс. Таким образом, конструктор Window Class является Window (param); Извините, я новичок: D Спасибо Sir –

+1

@BlazeTama getWindow() - это не конструктор. Вероятно, сам метод создает экземпляр Window [с помощью нового окна (...)] и возвращает его. – amit

2

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

+1

Обратите внимание, что 'Window' не имеет конструктора аргументов. – amit

+0

да, сэр, извините, я пропустил этот новый Window():: D Спасибо Сэр: D –

1

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

Когда вы используете 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. 

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

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

+2

Обратите внимание, что 'Window' не имеет конструктора аргументов. – amit

+1

Да! Спасибо. Я обновил код, чтобы отразить текущий api. – OrhanC1

+0

Спасибо Sir .. но что такое конструктор Window? Это getWindow(); метод? Я думаю, что все конструкторы должны иметь одно и то же имя с классом? Это смущало меня: D Сказал: D –

Смежные вопросы