2010-10-12 12 views
80

I Ho cercato su Google e ho letto la documentazione di Java, ma sono un po 'confuso. Qualcuno può spiegare che cos'è un Context in inglese normale?Che cosa è esattamente un contesto in Java?

+58

Bene, il significato del contesto può cambiare a seconda ... del contesto. –

+26

In quale contesto? Scherzi a parte - (non è uno scherzo) –

+11

@Colin è un secondo più divertente di me. –

risposta

72

In termini di programmazione, è la parte circostante più grande che può avere qualsiasi influenza sul comportamento dell'unità di lavoro corrente. Per esempio. l'ambiente di esecuzione utilizzato, le variabili di ambiente, le variabili di istanza, le variabili locali, lo stato di altre classi, lo stato dell'ambiente corrente, ecc.

In alcune API si vede questo nome in un'interfaccia/classe, ad es. Servlet's FacesContext, JSF's , di Spring, Android InitialContext, ecc. Tutti seguono spesso lo Facade Pattern che astrae i dettagli ambientali di cui l'utente non ha bisogno di sapere in una singola interfaccia/classe.

+2

Come è utile? Puoi darmi un esempio in Android? –

+4

Il collegamento "Modello facciata" rimanda a un articolo di Wikipedia che contiene un utile esempio di "Computer". Aiuta? Almeno si riduce che gestisce e controlla le parti interne dell'intero dispositivo (CPU/HDD/RAM/GPU/etc) senza che l'utente finale debba preoccuparsi. In caso di Android, come per Javadoc collegato * "Consente l'accesso a risorse e classi specifiche dell'applicazione, nonché up-call per operazioni a livello di applicazione come attività di lancio, trasmissione e ricezione di intenti, ecc." * – BalusC

+3

The Il principale vantaggio è che non è necessario fare tutto il modo "di basso livello". Il contesto si prenderà cura di questo. – BalusC

-1

dal momento che hai messo in maiuscolo la parola, presumo che ti riferisci all'interfaccia javax.naming.Context. Alcune classi implementano questa interfaccia e, nella sua descrizione più semplice, (genericamente) è un insieme di coppie nome/oggetto.

20

Un contesto rappresenta il vostro ambiente. Rappresenta lo stato intorno al quale ti trovi nel tuo sistema.

Ad esempio, nella programmazione Web in Java, si dispone di una richiesta e una risposta. Questi sono passati al metodo di servizio di un Servlet.

Una proprietà del Servlet è ServletConfig e al suo interno è un ServletContext.

ServletContext viene utilizzato per comunicare al servlet il contenitore in cui si trova il servlet.

Quindi, ServletContext rappresenta l'ambiente servlet all'interno del relativo contenitore.

Analogamente, in Java EE, si ha EBJContexts che gli elementi (come i bean di sessione) possono accedere per lavorare con i loro contenitori.

Questi sono due esempi di contesti utilizzati oggi in Java.

Modifica -

Si parla di Android.

un'occhiata qui: http://developer.android.com/reference/android/content/Context.html

si può vedere come questo contesto vi offre tutti i tipi di informazioni su dove l'applicazione Android è distribuito e ciò che è a sua disposizione.

79

In Android, Context è la classe base per Activity, Service, Application e alcune altre cose. Un oggetto Context rappresenta il gateway per gran parte del sistema Android sottostante, incluse risorse, servizi di sistema (ad esempio, per posizioni e notifiche) e il bus dei messaggi Intent. Dato che i tuoi componenti principali - Activity e Service - ereditano da Context, di solito hai un Context a portata di mano quando ti serve.

+3

Questa è la risposta che si applica specificamente ad Android – Falmarri

+0

per Android, Context è un'interfaccia per le informazioni globali su un ambiente applicativo. Questa è una classe astratta la cui implementazione è fornita dal sistema Android. Permette l'accesso a risorse e classi specifiche dell'applicazione, nonché up-call per operazioni a livello di applicazione come attività di lancio, trasmissione e ricezione di intenti, ecc. –

4

Semplicemente dicendo, contesto Java significa Java native metodi tutti insieme.

Nella seguente codice Java due linee di codice deve contesto: // (1) e // (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) deve contesto perché viene richiamato da Java metodo nativoprivate native void java.lang.Thread.start0();

(2) reader.readLine() necessita contesto perché invoca il metodo nativo Javapublic static native void java.lang.System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);

PS .

Questo è ciò che BalusC dice in modo più rigoroso sulla facciata del modello.

Problemi correlati