В Java объекты не могут быть вызваны напрямую. Вам нужно вызвать метод в экземпляре:
s.aiMethod();
Если вы хотите передать метод в качестве параметра, вам нужно использовать ссылку на метод. Ссылка на метод позволяет вам привести метод к интерфейсу с помощью одного метода, при условии, что возвращаемый тип и параметры совместимы.
В этом случае вы можете использовать интерфейс java.lang.Runnable
:
public interface Runnable {
public abstract void run();
}
Вы можете рефакторинг вашего метода, чтобы легко принимать ссылку на метод:
public static void AISteps(Runnable method){
for(int i = 0; i < 19; i++){
for(int j = 0; j < 19; j++){
if(Main.index[i][j] == "+ "){
if(Main.winner == "")
method.run();
}
}
}
}
Теперь выдолжен иметь возможность вызывать его следующим образом для статического метода:
AISteps(AIClass::someMethod);
То же правило применяется, если метод является методом экземпляра:
AIClass myAIClass = ...;
AISteps(myAIClass::someMethod);