Вопрос-ответ

Calling Non-Static Method In Static Method In Java [duplicate]

Вызов нестатического метода В статическом методе В Java

Я получаю сообщение об ошибке при попытке вызвать нестатический метод в статическом классе.


Не удается создать статическую ссылку на нестатический метод methodName() из типа playback


Я не могу сделать метод статическим, так как это тоже выдает ошибку.


Этот статический метод не может скрыть метод экземпляра от xInterface


Есть ли какой-либо способ обойти вызов нестатического метода в другом статическом методе? (Эти два метода находятся в отдельных пакетах и отдельных классах).

Переведено автоматически
Ответ 1

Единственный способ вызвать нестатический метод из статического метода - это иметь экземпляр класса, содержащий нестатический метод. По определению, нестатический метод - это тот, который вызывается В экземпляре некоторого класса, тогда как статический метод принадлежит самому классу.

Ответ 2

Вы могли бы создать экземпляр класса, для которого хотите вызвать метод, например

new Foo().nonStaticMethod();
Ответ 3

Сначала создайте экземпляр класса и вызовите нестатический метод, используя этот экземпляр. например,

class demo {

public static void main(String args[]) {
demo d = new demo();
d.add(10,20); // to call the non-static method
}

public void add(int x ,int y) {
int a = x;
int b = y;
int c = a + b;
System.out.println("addition" + c);
}
}
Ответ 4
public class StaticMethod{

public static void main(String []args)throws Exception{
methodOne();
}

public int methodOne(){
System.out.println("we are in first methodOne");
return 1;
}
}

приведенный выше код не выполняется, потому что статический метод должен иметь ссылку на этот класс.

public class StaticMethod{
public static void main(String []args)throws Exception{

StaticMethod sm=new StaticMethod();
sm.methodOne();
}

public int methodOne(){
System.out.println("we are in first methodOne");
return 1;
}
}

This will be definitely get executed. Because here we are creating reference which nothing but "sm" by using that reference of that class which is nothing
but (StaticMethod=new Static method()) we are calling method one (sm.methodOne()).

I hope this will be helpful.

java