Java中的Context究竟是什么?

时间:2010-10-12 19:01:19

标签: java android

我用Google搜索并阅读了Java文档,但我有点困惑。有人可以用简单的英语解释一下Context是什么意思吗?

4 个答案:

答案 0 :(得分:87)

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

在某些API中,您会在界面/类中看到此名称,例如Servlet的ServletContext,JSF的FacesContext,Spring的ApplicationContext,Android的Context,JNDI的InitialContext等等。它们都经常跟随Facade Pattern摘要最终用户不需要在单个界面/类中了解环境细节。

答案 1 :(得分:25)

Context代表您的环境。它表示您在系统中所处的状态。

例如,在Java中的Web编程中,您有一个Request和一个Response。它们被传递给Servlet的服务方法。

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

ServletContext用于告诉servlet Servlet所在的Container。

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

类似地,在Java EE中,您有EBJContexts,元素(如会话bean)可以访问它们的容器。

这是Java中使用的上下文的两个例子。

编辑 -

你提到Android。

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

您可以看到此上下文如何为您提供有关Android应用程序部署位置以及可用内容的各种信息。

答案 2 :(得分:5)

简单地说,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模式的更严格的说法。

答案 3 :(得分:0)

因为你把这个词大写了,我假设你指的是接口javax.naming.Context。一些类实现了这个接口,并且在最简单的描述中,它(通常)是一组名称/对象对。