비고
커뮤니티 관심 그룹은 이제 Yammer에서 Microsoft Viva Engage로 이동했습니다. Viva Engage 커뮤니티에 가입하고 최신 토론에 참여하려면 Finance and Operations Viva Engage Community 양식에 대한 요청 액세스 권한을 작성하고 참여하려는 커뮤니티를 선택합니다.
이 문서에서는 X++의 정적 클래스 멤버에 대해 설명합니다. 일반적으로 정적 메서드는 다음과 같은 경우에 사용됩니다.
- 메서드는 클래스에 선언된 멤버 변수에 액세스할 이유가 없습니다.
- 메서드는 클래스의 인스턴스(비정적) 메서드를 호출할 이유가 없습니다.
정적 키워드를 사용하여 정적 클래스 멤버를 선언합니다. 정적 키워드는 클래스의 인스턴스 수에 관계없이 메서드의 인스턴스를 하나만 만들도록 시스템에 지시합니다. 이 하나의 인스턴스는 세션 전체에서 사용됩니다.
정적 메서드
이 섹션에서는 불법 복제를 방지하기 위해 소프트웨어 키 형식을 사용하는 시나리오를 설명합니다. 소프트웨어 키의 각 인스턴스에는 고유한 값이 있을 수 있습니다. 모든 소프트웨어 키는 소프트웨어 키 디자인의 규칙을 준수해야 하므로 소프트웨어 키 규칙을 테스트하는 논리는 모든 소프트웨어 키에 대해 동일합니다. 따라서 규칙 유효성 검사 논리를 포함하는 메서드는 정적이어야 합니다.
다음은 정적 키워드를 사용하여 선언된 메서드의 예입니다.
public class SoftwareKey
{
static public boolean validateSoftwareKey(str _softwareKeyString)
{
// Your code here.
return false;
}
}
다음 예제에서는 클래스에서 정적 메서드를 호출하기 전에 SoftwareKey 클래스의 인스턴스를 생성할 필요가 없습니다. static validateSoftwareKey 메서드를 호출하려는 경우 구문은 메서드를 포함하는 클래스의 이름으로 시작합니다. 한 쌍의 콜론(::)을 사용하여 클래스 이름을 정적 메서드 이름에 연결합니다.
boolean yourBool = SoftwareKey::validateSoftwareKey(yourSoftwareKeyString);
정적 필드
정적 필드는 정적 키워드를 사용하여 선언된 변수입니다. 개념적으로 클래스 인스턴스가 아닌 클래스에 적용됩니다.
정적 생성자
정적 생성자는 클래스에 대한 정적 또는 인스턴스 호출이 이루어지기 전에 실행되도록 보장됩니다. 정적 생성자의 실행은 사용자의 세션을 기준으로 합니다. 정적 생성자에는 다음 구문이 있습니다.
static void TypeNew()
정적 생성자를 명시적으로 호출하지 않습니다. 컴파일러는 클래스의 다른 메서드 앞에 생성자가 정확히 한 번 호출되도록 하는 코드를 생성합니다. 정적 생성자는 정적 데이터를 초기화하거나 한 번만 수행해야 하는 특정 작업을 수행하는 데 사용됩니다. 정적 생성자에 대한 매개 변수를 제공할 수 없으며 정 적으로 표시되어야 합니다.
다음 코드 예제에서는 정적 생성자를 사용 하 여 단일 인스턴스를 만드는 방법을 보여 줍니다.
public class Singleton
{
private static Singleton instance;
private void new()
{
}
static void TypeNew()
{
instance = new Singleton();
}
public static Singleton Instance()
{
return Singleton::instance;
}
}
싱글톤은 클래스의 인스턴스가 하나만 호출되도록 보장합니다. 다음 예제에서는 싱글톤을 인스턴스화하는 방법을 보여줍니다.
Singleton i = Singleton::Instance();
정적 메서드
클래스 메서드라고도 하는 정적 메서드는 클래스에 속하며 정적 키워드를 사용하여 생성됩니다. 정적 메서드를 사용하기 전에 개체를 인스턴스화할 필요가 없습니다. 정적 메서드는 테이블에 저장된 데이터를 사용하는 데 자주 사용됩니다. 멤버 변수는 정적 메서드에서 사용할 수 없습니다. 다음 구문을 사용하여 정적 메서드를 호출합니다.
ClassName::methodName();
정적 및 인스턴스 메서드
메서드의 접근자 키워드는 정적 또는 비정적 메서드에 관계없이 동일한 클래스에 있는 두 메서드 간의 호출을 제한하지 않습니다. 정적 메서드에서 새 생성자 메서드가 프라이빗 한정자로 데코레이팅된 경우에도 새 생성자 메서드에 대한 호출이 유효합니다. 이러한 호출의 구문을 사용하려면 새 키워드를 사용해야 합니다. 정적 메서드의 코드는 클래스에서 인스턴스 메서드를 호출하기 전에 자체 클래스의 인스턴스 개체를 생성해야 합니다.