Apex - Metodi
Metodi di classe
Esistono due modificatori per i metodi di classe in Apex: pubblico o protetto. Il tipo restituito è obbligatorio per il metodo e se il metodo non restituisce nulla, è necessario menzionare void come tipo restituito. Inoltre, per il metodo è richiesto anche Body.
Syntax
[public | private | protected | global]
[override]
[static]
return_data_type method_name (input parameters) {
// Method body goes here
}
Spiegazione della sintassi
Quei parametri menzionati tra parentesi quadre sono facoltativi. Tuttavia, i seguenti componenti sono essenziali:
- return_data_type
- method_name
Modificatori di accesso per metodi di classe
Utilizzando i modificatori di accesso, è possibile specificare il livello di accesso per i metodi di classe. Ad esempio, il metodo Public sarà accessibile da qualsiasi punto della classe e al di fuori della classe. Il metodo privato sarà accessibile solo all'interno della classe. Global sarà accessibile da tutte le classi Apex e potrà essere esposto come metodo di servizio web accessibile da altre classi Apex.
Example
//Method definition and body
public static Integer getCalculatedValue () {
//do some calculation
myValue = myValue+10;
return myValue;
}
Questo metodo ha un tipo restituito come Integer e non accetta parametri.
Un metodo può avere parametri come mostrato nell'esempio seguente:
// Method definition and body, this method takes parameter price which will then be used
// in method.
public static Integer getCalculatedValueViaPrice (Decimal price) {
// do some calculation
myValue = myValue+price;
return myValue;
}
Costruttori di classi
Un costruttore è un codice che viene richiamato quando un oggetto viene creato dal blueprint della classe. Ha lo stesso nome del nome della classe.
Non è necessario definire il costruttore per ogni classe, poiché per impostazione predefinita viene chiamato un costruttore senza argomenti. I costruttori sono utili per l'inizializzazione delle variabili o quando un processo deve essere eseguito al momento dell'inizializzazione della classe. Ad esempio, ti piacerebbe assegnare valori a determinate variabili Integer come 0 quando la classe viene chiamata.
Example
// Class definition and body
public class MySampleApexClass2 {
public static Double myValue; // Class Member variable
public static String myString; // Class Member variable
public MySampleApexClass2 () {
myValue = 100; //initialized variable when class is called
}
public static Double getCalculatedValue () { // Method definition and body
// do some calculation
myValue = myValue+10;
return myValue;
}
public static Double getCalculatedValueViaPrice (Decimal price) {
// Method definition and body
// do some calculation
myValue = myValue+price; // Final Price would be 100+100=200.00
return myValue;
}
}
Puoi anche chiamare il metodo della classe tramite il costruttore. Ciò può essere utile quando si programma Apex per visual force controller. Quando viene creato un oggetto classe, il costruttore viene chiamato come mostrato di seguito:
// Class and constructor has been instantiated
MySampleApexClass2 objClass = new MySampleApexClass2();
Double FinalPrice = MySampleApexClass2.getCalculatedValueViaPrice(100);
System.debug('FinalPrice: '+FinalPrice);
Costruttori di sovraccarico
I costruttori possono essere sovraccaricati, ovvero una classe può avere più di un costruttore definito con parametri differenti.
Example
public class MySampleApexClass3 { // Class definition and body
public static Double myValue; // Class Member variable
public static String myString; // Class Member variable
public MySampleApexClass3 () {
myValue = 100; // initialized variable when class is called
System.debug('myValue variable with no Overaloading'+myValue);
}
public MySampleApexClass3 (Integer newPrice) { // Overloaded constructor
myValue = newPrice; // initialized variable when class is called
System.debug('myValue variable with Overaloading'+myValue);
}
public static Double getCalculatedValue () { // Method definition and body
// do some calculation
myValue = myValue+10;
return myValue;
}
public static Double getCalculatedValueViaPrice (Decimal price) {
// Method definition and body
// do some calculation
myValue = myValue+price;
return myValue;
}
}
Puoi eseguire questa classe come l'abbiamo eseguita nell'esempio precedente.
// Developer Console Code
MySampleApexClass3 objClass = new MySampleApexClass3();
Double FinalPrice = MySampleApexClass3.getCalculatedValueViaPrice(100);
System.debug('FinalPrice: '+FinalPrice);