Можно ли в этом методе получить объект, вызывающий статический метод?
У меня есть этот код:
class A{
static void foo(){
}
}
A a = new A();
a.foo();
Могу ли я получить экземпляр a
в методе foo()
?
Можно ли в этом методе получить объект, вызывающий статический метод?
У меня есть этот код:
class A{
static void foo(){
}
}
A a = new A();
a.foo();
Могу ли я получить экземпляр a
в методе foo()
?
Во-первых, ваш код не годится для программиста.
Это связано с тем, что статические методы являются методами уровня класса и должны вызываться без какого-либо экземпляра класса.
Рекомендуемый подход:
class A{
static void foo(){
}
}
A.foo();
Могу ли я получить экземпляр a в методе foo()?
Нет, ты не можешь. Потому что foo() объявлен как статический. Таким образом, вы не можете использовать this внутри этого метода, так как он содержит ссылку на объект, вызвавший метод.
По определению, для метода static
нет объекта-экземпляра (статические методы не работают с конкретным объектом, они определены внутри класса исключительно для пространства имен), поэтому нет.
Нет, это невозможно... у статического метода нет ссылки, вы должны передать его, повторно реализуя метод как:
class A{ static void foo(A theObject){ } } A a = new A(); A.foo(a);
и лучше не вызывать статический метод из экземпляра объекта
Нет; вот что означает static
.
Фактически компилятор полностью игнорирует экземпляр.
Используйте метод экземпляра.
A()
? - person Eng.Fouad   schedule 12.07.2011