Java中的上下文到底是啥? [复制]

Posted

技术标签:

【中文标题】Java中的上下文到底是啥? [复制]【英文标题】:What exactly is a Context in Java? [duplicate]Java中的上下文到底是什么? [复制] 【发布时间】:2011-04-24 12:03:51 【问题描述】:

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

【问题讨论】:

嗯,上下文的含义可以根据...上下文而改变。 在什么情况下?说真的——(不是开玩笑) @Colin 比我有趣一秒。 你的意思是android Context吗?这与“Java 中的上下文”非常不同。 这个问题类似于“'this'是什么意思?” 【参考方案1】:

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

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

【讨论】:

这有什么用?你能举个Android的例子吗? “外观模式”链接指向 Wikipedia 文章,其中包含“计算机”风格的有用示例。它有帮助吗?它至少归结为它管理和控制整个设备的内部部分(CPU/HDD/RAM/GPU/等),而最终用户不必担心。对于 Android,根据链接的 Javadoc “它允许访问特定于应用程序的资源和类,以及对应用程序级操作的向上调用,例如启动活动、广播和接收意图等。” 主要的好处是您不需要全部以“低级”方式进行。上下文会处理这个问题。 CONTEXT 的含义随着上下文的变化而变化。基本上,它用于应用程序/对象的当前状态内容。它表示环境数据并提供对数据库、UI 等内容的访问【参考方案2】:

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

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

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

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

因此,ServletContext 代表其容器内的 servlet 环境。

同样,在 Java EE 中,您有 EBJContexts 元素(如会话 bean)可以访问以使用它们的容器。

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

编辑 --

你提到了安卓。

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

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

【讨论】:

【参考方案3】:

简单地说,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 对 Pattern Facade 的更严格的说法。

【讨论】:

【参考方案4】:

由于您将单词大写,我假设您指的是接口javax.naming.Context。有几个类实现了这个接口,用最简单的描述,它(通常)是一组名称/对象对。

【讨论】:

以上是关于Java中的上下文到底是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在上下文(非)敏感分析中,“上下文”到底是啥意思?

Android中的“上下文”是啥意思? [复制]

JavaScript进入函数上下文到底指的是啥?

上下文到底是啥?

在隐含的上下文中,“比更具体”到底是啥意思?

python中的&是啥意思