Java中的上下文究竟是什么?
我search了这个并阅读Java文档,但是我有点困惑。 有人能解释一下Context
是纯英文的吗?
在编程方面,它是较大的周边部分,可以对当前工作单元的行为产生任何影响。 例如使用的运行环境,环境variables,实例variables,局部variables,其他类的状态,当前环境的状态等等。
在一些API中,你可以在接口/类中看到这个名字,例如Servlet的ServletContext
,JSF的FacesContext
,Spring的ApplicationContext
,Android的Context
,JNDI的InitialContext
等。它们通常都遵循Facade Pattern ,它抽象出最终用户不需要的环境细节在单个界面/类中了解。
在Android中, Context
是Activity
, Service
, Application
等基类。 一个Context
对象是你的基本Android系统的门户,包括资源,系统服务(例如位置和通知)和Intent
消息总线。 由于您的主要组件( Activity
和Service
)从Context
inheritance,因此在需要时通常可以使用Context
。
上下文表示您的环境。 它代表了你所在系统的状态。
例如,在Java中的Web编程中,您有一个Request和一个Response。 这些被传递给Servlet的服务方法。
Servlet的一个属性是ServletConfig,并且是ServletContext。
ServletContext用于告诉Servlet Servlet所在的Container。
所以,ServletContext表示其容器内的servlet环境。
同样,在Java EE中,您有EBJContext,元素(如会话bean)可以访问它们的容器。
这是今天在Java中使用的两个上下文的例子。
编辑 –
你提到Android。
看看这里: http : //developer.android.com/reference/android/content/Context.html
您可以看到这个Context为您提供关于Android应用程序的部署位置和可用内容的各种信息。
简单地说,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更严格的说法。
既然你大写这个词,我假设你指的是接口javax.naming.Context
。 一些类实现了这个接口,并且在最简单的描述中,它(一般地)是一组名称/对象对。