Java中的Context究竟是什么?

Chr*_*rry 99 java android

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

Bal*_*usC 95

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

在某些API中,您可以在界面/类中看到此名称,例如Servlet ServletContext,JSF FacesContext,Spring ApplicationContext,Android Context,JNDI InitialContext等.它们通常都遵循Facade Pattern,它抽象出最终用户不需要知道的环境细节.单个接口/类.

  • "Facade Pattern"链接指向维基百科文章,其中包含"计算机"风格的有用示例.有帮助吗?它至少归结为它管理和控制整个设备的内部部件(CPU/HDD/RAM/GPU /等),而最终用户不必担心.在Android的情况下,根据链接的Javadoc*"它允许访问特定于应用程序的资源和类,以及对应用程序级操作的上调,例如启动活动,广播和接收意图等."* (4认同)
  • 这有用吗?你能举个Android的例子吗? (3认同)
  • 主要好处是您不需要以"低级"方式完成所有操作.上下文将关注此事. (3认同)
  • CONTEXT 的含义随上下文而变化。基本上,它用于应用程序/对象的当前状态的内容。它代表环境数据并提供对数据库、UI 等内容的访问 (2认同)

Wil*_*ung 28

上下文代表您的环境.它代表您在系统中所处的状态.

例如,在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

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


Dmi*_*ich 5

简单地说,Java上下文native一起表示Java 方法.

在下一个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);
    }
}
Run Code Online (Sandbox Code Playgroud)

(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模式的更严格的说法.