Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Los grupos de interés de la comunidad ahora se han movido de Yammer a Microsoft Viva Engage. Para unirse a una comunidad viva Engage y participar en las últimas discusiones, rellene el formulario Solicitar acceso a Finance and Operations Viva Engage Community y elija la comunidad a la que desea unirse.
En este artículo se describen los miembros de clase estáticos en X++. En general, los métodos estáticos están diseñados para estos casos:
- El método no tiene ninguna razón para tener acceso a las variables miembro declaradas en la clase .
- El método no tiene ninguna razón para llamar a ningún método de instancia (no estático) de la clase .
Los miembros de clase estática se declaran mediante la palabra clave static . La palabra clave static indica al sistema que cree solo una instancia del método, independientemente del número de instancias de la clase. Esta instancia se usa en toda la sesión.
Métodos estáticos
En esta sección se describe un escenario en el que se usa un tipo de clave de software para ayudar a evitar la piratería. Cada instancia de una clave de software puede tener su propio valor único. Dado que todas las claves de software deben cumplir las reglas de diseño de claves de software, la lógica que prueba la conformidad de la clave de software es la misma para todas las claves de software. Por lo tanto, el método que contiene la lógica de validación de conformidad debe ser estático.
Este es un ejemplo de un método declarado mediante la palabra clave static .
public class SoftwareKey
{
static public boolean validateSoftwareKey(str _softwareKeyString)
{
// Your code here.
return false;
}
}
En el ejemplo siguiente, no es necesario construir una instancia de la clase SoftwareKey antes de llamar a un método estático en la clase . Cuando desee llamar al método static validateSoftwareKey , la sintaxis comienza con el nombre de la clase que contiene el método . Se usa un par de dos puntos (::) para conectar el nombre de clase al nombre del método estático.
boolean yourBool = SoftwareKey::validateSoftwareKey(yourSoftwareKeyString);
Campos estáticos
Los campos estáticos son variables declaradas mediante la palabra clave static . Conceptualmente, se aplican a la clase , no a instancias de la clase .
Constructores estáticos
Se garantiza que un constructor estático se ejecute antes de que se realicen llamadas estáticas o de instancia a la clase . La ejecución del constructor estático es relativa a la sesión del usuario. El constructor estático tiene la sintaxis siguiente.
static void TypeNew()
Nunca se llama explícitamente al constructor estático. El compilador generará código para asegurarse de que el constructor se llama exactamente una vez antes de cualquier otro método de la clase . Un constructor estático se usa para inicializar los datos estáticos o realizar una acción determinada que solo se debe realizar una vez. No se puede proporcionar ningún parámetro para el constructor estático y debe marcarse como estático.
En el ejemplo de código siguiente se muestra cómo crear una instancia singleton mediante un constructor estático.
public class Singleton
{
private static Singleton instance;
private void new()
{
}
static void TypeNew()
{
instance = new Singleton();
}
public static Singleton Instance()
{
return Singleton::instance;
}
}
Singleton garantiza que solo se llamará a una instancia de la clase. En el ejemplo siguiente se muestra cómo crear una instancia del singleton.
Singleton i = Singleton::Instance();
Métodos estáticos
Los métodos estáticos, que también se conocen como métodos de clase, pertenecen a una clase y se crean mediante la palabra clave static. No es necesario crear una instancia de un objeto antes de usar métodos estáticos. Los métodos estáticos se suelen usar para trabajar con datos almacenados en tablas. Las variables miembro no se pueden usar en un método estático. Use la siguiente sintaxis para llamar a métodos estáticos.
ClassName::methodName();
Métodos estáticos e de instancia
Las palabras clave de descriptor de acceso de los métodos nunca restringen las llamadas entre dos métodos que están en la misma clase, independientemente de qué método sea estático o no estático. En un método estático, las llamadas al nuevo método constructor son válidas incluso si el nuevo método de constructor está decorado con el modificador privado . La sintaxis de estas llamadas requiere que se use la palabra clave new . El código de un método estático debe construir un objeto de instancia de su propia clase para poder llamar a cualquier método de instancia de la clase .