demonstrativo estático
Declara um inicializador de classe nova dentro de uma declaração de classe.
static identifier {
[body]
}
Argumentos
identifier
Obrigatório.O nome da classe que contém o bloco de inicializador.body
Opcional.O código que compreende o inicializador de bloco.
Comentários
A estático inicializador de é usado para inicializar um classe objeto (não objeto instâncias) antes de sua primeira utilização.Essa inicialização ocorre somente uma vez e pode ser usado para inicializar campos na classe que têm o estáticomodificador de .
A classe pode conter vários estático inicializador blocos intercaladas com estático declarações de campo.Ao inicializar o classe, all the estático blocos de e estático inicializadores de campo são executados na ordem em que aparecem no classe corpo.Essa inicialização é executada antes da primeira referência a um estático campo.
Não confunda o estático modificador com o estático demonstrativo.The estático modificador denota um membro que pertence à classe, não qualquer instância da classe.
Exemplo
O exemplo a seguir mostra um simples classe declaração na qual o estáticoinicializador de é usado para executar um cálculo só precisa ser concluído uma vez.Neste exemplo, uma tabela de fatoriais é calculada de uma vez.Quando forem necessários fatoriais eles são lidos da tabela.Essa abordagem é mais rápida do que o cálculo recursivamente fatoriais se fatoriais grandes são necessárias muitas vezes no programa.
The estáticomodificador de é usado para o método fatorial.
class CMath {
// Dimension an array to store factorial values.
// The static modifier is used in the next two lines.
static const maxFactorial : int = 5;
static const factorialArray : int[] = new int[maxFactorial];
static CMath {
// Initialize the array of factorial values.
// Use factorialArray[x] = (x+1)!
factorialArray[0] = 1;
for(var i : int = 1; i< maxFactorial; i++) {
factorialArray[i] = factorialArray[i-1] * (i+1);
}
// Show when the initializer is run.
print("Initialized factorialArray.");
}
static function factorial(x : int) : int {
// Should have code to check that x is in range.
return factorialArray[x-1];
}
};
print("Table of factorials:");
for(var x : int = 1; x <= CMath.maxFactorial; x++) {
print( x + "! = " + CMath.factorial(x) );
}
A saída desse código é:
Table of factorials:
Initialized factorialArray.
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120