Что такое контекст в 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. Несколько классов реализуют этот интерфейс, и в своем простейшем описании он (в общем случае) представляет собой набор пар имен/объектов.