2012-04-17 3 views
1

Следующая синглтон класс работает отлично,Использование «этого», а не использование его в одноэлементном классе для Java?

public class Elvis 
{ 
    private static Elvis elvis = new Elvis(); 

    private Elvis() 
    { 

    } 

    public static Elvis Instance() 
    { 
     return elvis; 
    } 
} 

Однако, когда я изменяю return elvis; к return this.elvis, я получаю non-static variable this cannot be referenced from a static context. Почему это?

+3

нет ложкой. – user1329572

+3

'this' существует только в контексте экземпляра объекта, а не в статическом контексте. –

+0

В статическом контексте вы можете использовать 'Elvis.elvis' вместо' this.elvis'. –

ответ

11

this относится к экземпляру текущего объекта. Метод static не содержится в объекте, он содержится в классе.

1

Два ключевых слова «это» и «статические» в некотором смысле являются антагонистическими. Вы используете «это», когда вы ссылаетесь на членов текущего объекта, то есть у вас есть объект, и вы, по-видимому, участвуете в нестационарном члене. Статические элементы, функции и свойства являются «глобальными» для всех объектов, они не принадлежат ни одному конкретному объекту, а относятся к самому классу.

Long история производства короткий. «this» означает текущий экземпляр этого объекта. Статические элементы не принадлежат ни одному экземпляру.

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