Перед тем, как вы опустили верх, потому что вы воспринимаете это как еще один дубликат «создания статической ссылки на нестатический ...», прочитайте весь вопрос.Создание статической ссылки на File.getName() вызывает ошибку
Я пишу программу, которая в основном проходит через каталог и вытаскивает все файлы .txt
. Фактически, я фактически использовал this SO нить, чтобы помочь мне. Мой код работает, за исключением одной вещи, которая не покрыта потоком. Добавление некоторой информации, собранной в HashMap
. В моей программе я использую HashMap
для хранения имени в качестве ключа и файла, который я сделал в качестве значения.
хэш-карта выглядит следующим образом:
private HashMap<String, Essay> locations;
Этот хэш-карта представляет местоположение каждого файла, вместе с объектом «Очерков», который имеет больше информации о файле.
Мой главный метод содержит логику, чтобы увидеть, является ли файл txt, и если да, добавьте его в HashMap
.
public void indexEachFile(){
for (File file : directory.listFiles()){
if (file.getName().endsWith(".txt") && file.isFile()){
//If it is a txt
locations.put(File.getName(), new Essay()); //Bad line of code
}
}
}
линия, где имя и новый объект добавляются в хэше-карту бросает ошибку:
Cannot make a static reference to the non-static method getName() from the type File
Я полностью понимает, что функция не является статичной.
Я не понимаю, почему ссылка на getName()
является статической. Есть ли лучший способ реализовать это дополнение к HashMap, которое не вызывает ошибку?
EDIT: Теперь я понял, что моя проблема связана с небольшой ошибкой, которая изменила то, что я пытался сделать.
Возможный дубликат [Что является причиной «не статический метод не может ссылаться из статического контекста»] (http://stackoverflow.com/ вопросы/290884/what-is-the-reason-behind-non-static-method-не может быть ссылкой-из-статического) –
Независимо от вашей «проблемы с HashMap» вы делаете статические ссылки на экземпляр класса файла .... –