Static в методах

141
03 октября 2018, 04:10

Такая ошибка:

public class Test {
    public static void main(String[] args) {
        readFile(); // здесь выдаётся ошибка, но если указать ниже в методе public STATIC void readFile() то ошибка уходит.
    }
    public void readFile() throws FileNotFoundException {
        File file = new File("sdsd");
        Scanner scanner = new Scanner(file);
        }
    }
}

Ошибка, как я понял в том, что метод не статический передаю в статический метод

Public static void main(String[] args)

Правильно ли я мыслю или нет?

Answer 1

Статический метод вызывается у класса, не статический метод вызывается у объекта.

Вам надо либо сделать readFile() статическим, либо в методе main() создать объект и у него вызвать метод readFile():

Test test = new Test();    
test.readFile();
Answer 2

Дело не в том, что вы передаете нестатический метод в статический. Дело в том, что для использования нестатического метода необходимо использовать его на экземпляре класса. Статические же методы можно вызывать без экземпляра класса. Посмотрите на эти примеры:

public class AnotherClass {
static AnotherClass a = new AnotherClass(); //здесь мы создаем статическую переменную, иначе компилятор будет ругаться
public static void main(String[] args) {
    AnotherClass b = new AnotherClass(); //здесь использование static не обязательно, так как переменная создается внутри метода
    a.readFile();
    b.readFile(); // оба варианта возможны
}
public void readFile() {
    try {
        File file = new File("sdsd");
        Scanner scanner = new Scanner(file);
    }
    catch (FileNotFoundException e) {
    }
} // если не использовать конструкцию try{} catch{}, то компилятор будет ругаться на неотловленное исключение. Ключевое слово throws же говорит о том, что внутри метода вручную бросается какое-то исключение с помощью throw, что у вас не происходит.

}

READ ALSO
Глюк при работе с Java

Глюк при работе с Java

Windows XP Professional SP3 jdk17

140
Ошибка при парсинге HTML страницы в Android

Ошибка при парсинге HTML страницы в Android

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

168
Как исправить Cannot find the declaration of element 'hibernate-configuration'

Как исправить Cannot find the declaration of element 'hibernate-configuration'

Начал смотреть что такое Hibernate и БД PostgreSQL, но столкнулся с проблемойIdea выкидывает следующее сообщение

207