Java 中的上下文到底是什么?

我谷歌了一下这个,并阅读了 Java 文档,但是我有点困惑。谁能解释一下什么是 Context

149557 次浏览

在编程术语中,较大的周围部分可以对当前工作单元的行为产生 任何影响。例如,使用的运行环境,环境变量,实例变量,局部变量,其他类的状态,当前环境的状态,等等。

在一些 API 中,你可以在接口/类中看到这个名字,例如 Servlet 的 ServletContext、 JSF 的 FacesContext、 Spring 的 ApplicationContext、 Android 的 Context、 JNDI 的 InitialContext等等。它们通常都遵循 FacesContext0,在单个接口/类中抽象出终端用户不需要知道的环境细节。

既然你把这个词大写了,我想你指的是接口 javax.naming.Context。有几个类实现了这个接口,在其最简单的描述中,它(通常)是一组名称/对象对。

上下文表示您的环境。它表示您在系统中的位置周围的状态。

例如,在 Java 的 Web 编程中,有一个请求和一个响应。它们被传递给 Servlet 的服务方法。

Servlet 的一个属性是 ServletConfig,其中有一个 ServletContext。

ServletContext 用于告诉 Servlet 有关 Servlet 所在容器的信息。

因此,ServletContext 表示其容器中的 servlet 环境。

类似地,在 JavaEE 中,元素(比如会话 bean)可以访问 EBJContext 来使用它们的容器。

这是当今 Java 中使用的两个上下文示例。

Edit --

你提到了安卓。

看这里: http://developer.android.com/reference/android/content/Context.html

You can see how this Context gives you all sorts of information about where the Android app is deployed and what's available to it.

简单地说,Java 上下文意味着所有 Javanative方法。

在接下来的 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);

附言。

这就是 BalusC 所说的更严格的模式 Facade。