Чтобы настроить карту на доступность статическим методом, вам нужно инициализировать ее в статическом блоке. Создание его в конструкторе ничего не доказывает, Java не запускает этот конструктор перед вызовом main
.
import java.util.HashMap;
public class TestApp {
private static HashMap<String, String[]> subjects;
static {
subjects = new HashMap<String, String[]>();
subjects.put("calculus",new String[] {"math","logic"});
subjects.put("chemisty",new String[] {"ions","electrons"});
subjects.put("biology",new String[] {"life","bacteria"});
}
public static void main(String[] args){
for(String s:subjects.get("biology")){
System.out.println(s);
}
}
}
Кроме того, поскольку вы кажетесь студентом, обычно считается хорошей практикой программировать интерфейсы, когда это возможно. то есть мы бы предпочли объявить private static Map<String, String[]> subjects;
через HashMap, когда нет причин, по которым это должен быть конкретный тип Map