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