Что такое контекст в Java?
Я разобрал это и прочитал документацию по Java, но я немного смущен. Может кто-нибудь объяснить, что означает Context
на простом английском языке?
Ответы
Ответ 1
В терминах программирования это большая окружающая часть, которая может влиять на поведение текущей единицы работы. Например. используемая рабочая среда, переменные среды, переменные экземпляра, локальные переменные, состояние других классов, состояние текущей среды и т.д.
В некоторых API вы видите это имя обратно в интерфейсе/классе, например. Servlet ServletContext
, JSF FacesContext
, Spring ApplicationContext
, Android Context
, JNDI InitialContext
и т.д. Они часто следуют Шаблон фасада, который абстрагирует детали окружающей среды, о которых конечный пользователь не должен знать об этом в одном интерфейсе/классе.
Ответ 2
В Android Context
- базовый класс для Activity
, Service
, Application
и несколько других вещей. Объект Context
является вашим шлюзом для большей части базовой системы Android, включая ресурсы, системные службы (например, для местоположений и уведомлений) и шину сообщений Intent
. Поскольку ваши основные компоненты - Activity
и Service
- наследуются от Context
, вы обычно имеете Context
, когда вам это нужно.
Ответ 3
Контекст представляет вашу среду. Он представляет состояние, в котором вы находитесь, в вашей системе.
Например, в веб-программировании на Java у вас есть запрос и ответ. Они передаются сервисному методу сервлета.
Свойством Servlet является ServletConfig, и внутри него находится ServletContext.
ServletContext используется, чтобы сообщить сервлету о контейнере, что Servlet находится внутри.
Итак, ServletContext представляет среду сервлетов в своем контейнере.
Аналогично, в Java EE у вас есть EBJContexts, что элементы (например, session beans) могут иметь доступ к работе со своими контейнерами.
Вот два примера контекстов, используемых в Java сегодня.
Изменить -
Вы упоминаете Android.
Смотрите здесь: http://developer.android.com/reference/android/content/Context.html
Вы можете видеть, как этот Контекст предоставляет вам всю информацию о том, где развертывается приложение Android и что доступно для него.
Ответ 4
Просто говоря, Java-контекст означает методы Java native
все вместе.
В следующем коде Java две строки кода нуждаются в контексте: // (1)
и // (2)
import java.io.*;
public class Runner{
public static void main(String[] args) throws IOException { // (1)
File file = new File("D:/text.txt");
String text = "";
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null){ // (2)
text += line;
}
System.out.println(text);
}
}
(1) нужен контекст, потому что он вызван встроенным методом Java private native void java.lang.Thread.start0();
(2) reader.readLine()
нужен контекст, потому что вызывает собственный Java-метод public static native void java.lang.System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
PS.
Вот что BalusC более точно говорит о шаблоне Facade.
Ответ 5
поскольку вы заглавили слово, я предполагаю, что вы имеете в виду интерфейс javax.naming.Context
. Несколько классов реализуют этот интерфейс, и в своем простейшем описании он (в общем случае) представляет собой набор пар имен/объектов.