Docs Menu
Docs Home
/ /
Atlas Device SDK
/ / /

열거형 RealmNamingPolicy

이 페이지의 내용

  • io.realm.annotations
  • 열거형 상수 요약
  • 메서드 요약
  • 상속된 메서드
  • 열거형 상수 세부 정보
  • CAMEL_CASE
  • IDENTITY
  • LOWER_CASE_WITH_UNDERSCORES
  • NO_POLICY
  • PASCAL_CASE
  • 메서드 세부 정보
  • valueOf
  • values
java.lang.Object
io.realm.annotations.RealmNamingPolicy

이 열거형은 클래스 및 필드 이름을 Java에서 사용되는 이름에서 Realm 파일에서 내부적으로 사용되는 이름으로 매핑할 수 있는 가능한 방법을 정의합니다.

  • 이름은 같지만 패키지가 다른 두 모델 클래스를 지원합니다.

  • 명명 규칙이 다르기 때문에 크로스 플랫폼 스키마로 더 쉽게 작업할 수 있습니다.

  • Realm에서 시행하는 57자 제한보다 긴 Java 클래스 이름을 사용하려는 경우.

  • 앱 사용자에게 마이그레이션 프로세스를 강제하지 않고 Java에서 필드 이름을 변경하고자 하는 경우.

정책이 적용되는 위치에 따라 의미가 약간 달라집니다.

  • RealmModule.classNamingPolicy 에 적용된 경우 해당 모듈의 모든 클래스 일부가 영향을 받습니다. 클래스가 여러 모듈의 일부인 경우 두 모듈에 동일한 명명 정책을 적용해야 하며, 그렇지 않으면 오류가 발생합니다.

  • RealmModule.fieldNamingPolicy 에 적용된 경우 이 모듈의 모든 클래스 일부에 있는 모든 지속 가능 필드가 영향을 받습니다.

  • RealmClass.fieldNamingPolicy 를 적용하면 해당 클래스의 모든 필드가 영향을 받습니다. 이렇게 하면 모듈에 지정된 모든 필드 명명 정책이 재정의됩니다.

예를 들면 다음과 같습니다.

@RealmClass(name = "__person", fieldNamingPolicy = RealmNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
public class Person implements RealmModel { // is converted to "__person" internally
public string firstName; // Is converted to "first_name" internally
}

Java 모델 클래스에 사용된 이름과 다른 내부 이름을 선택하면 다음과 같은 의미가 있습니다.

  • DynamicRealm 에 대한 쿼리는 내부 이름을 사용해야 합니다. 일반 Realm 인스턴스에 대한 쿼리는 Java 클래스에 정의된 이름을 계속 사용해야 합니다.

  • 마이그레이션은 클래스 및 필드를 만들 때 내부 이름을 사용해야 합니다.

  • 보고된 스키마 오류에는 내부 이름이 사용됩니다.

Java 변수 이름을 자동으로 변환할 때 각 변수 이름은 단어 목록으로 분할된 다음 대상 형식의 규칙을 사용하여 결합되는 방식으로 정규화됩니다. 다음과 같은 휴리스틱은 "단어"를 구성하는 항목을 결정하는 데 사용됩니다.

  1. _ 또는 $ 이(가) 발생할 때마다 발생합니다. 예를 들면 '_FirstName', '_First_Name', '$First$Name'이 있으며, 이는 모두 'First' 및 'Name'이 됩니다.

  2. Character.isUpperCase(int) 로 식별되는 소문자에서 대문자로 전환할 때마다 및 Character.isLowerCase(int) . 예를 들어 'FirstName'은 'First'와 'Name'이 됩니다.

  3. 둘 이상의 대문자에서 소문자로 전환할 때마다 발생합니다. 마지막 대문자는 다음 단어의 일부로 간주됩니다. 이는 Character.isUpperCase(int)Character.isLowerCase(int) . 예를 들어 'FIRSTName'은 'FIRST' 및 'Name.

  4. 그림과 같은 일부 문자는 대문자도 소문자도 아니므로 현재 단어의 일부가 됩니다. 예를 들어 'my'와 'my '가 있으며, 이는 둘 다 하나의 단어로 취급됩니다.

  5. 헝가리어 표기법, 즉 소문자 "m"으로 시작하고 그 뒤에 대문자가 오는 변수 이름은 제거되며 어떤 단어의 일부로 간주되지 않습니다. 예를 들면 "mFirstName" 및 "mFIRSTName"이(가) "First"와 "Name.

내부 이름을 변경해도 JSON에서 데이터 가져오기에는 영향을 주지 않습니다 . JSON 데이터는 여전히 Realm Java 클래스에 정의된 이름을 따라야 합니다.

Mashi, GSON 또는 잭슨과 같은 표준 라이브러리를 사용하여 JSON을 구문 분석할 때 이러한 라이브러리는 JSON에서 Java로의 변환을 정의하는 반면 내부 Realm 이름 설정은 Java에서 Realm 파일로의 변환을 정의한다는 점을 명심해야 합니다.

즉, 이러한 라이브러리를 사용하여 JSON에서 Realm으로 데이터를 가져오려면 JSON 구문 분석기 라이브러리와 Realm 모두에서 주석을 제공해야 합니다.

Mashi를 사용하면 다음과 같이 표시됩니다.

public class Person extends RealmObject {
@Json(name = "first_name") // Name used in JSON input.
@RealmField(name = "first_name") // Name used internally in the Realm file.
public string firstName; // name used in Java
}

다음도 참조하세요.

열거형 상수 및 설명

CANEL_CASE

Java 모델 클래스의 이름은 카멜 케이스로 변환됩니다.

IDENTITY

Java 모델 클래스의 이름은 내부적으로 있는 그대로 사용됩니다.

OWER_CASE_WiTH_UNDERSCORES

Java 모델 클래스의 이름은 각 단어를 _ 으로 구분하여 소문자로 변환합니다.

NO_POLICY

정책이 적용되지 않습니다.

PASCAL_CASE

Java 모델 클래스의 이름은 PascalCase로 변환됩니다.

수정자 및 유형
메서드 및 설명
public static RealmNamingPolicy
public static RealmNamingPolicy

public static final RealmNamingPolicy

Java 모델 클래스의 이름은 camelCase로 변환됩니다. 이는 Java, Kotlin, Swift 및 JavaScript의 표준 명명 스키마입니다. 예: 'firstName', 'FirstName', 'mFirstName', 'FIRST_NAME', 'First$Name'은 모두 'firstName'이(가) 됩니다.

public static final RealmNamingPolicy

Java 모델 클래스의 이름은 내부적으로 있는 그대로 사용됩니다.

public static final RealmNamingPolicy

Java 모델 클래스의 이름은 각 단어를 _ 으로 구분하여 소문자로 변환됩니다. 이것이 C++의 기본 명명 체계입니다.

예: "firstName", "FirstName", "mFirstName", "FIRST_NAME", "First$Name"은 모두 "first_name"이(가) 됩니다.

public static final RealmNamingPolicy

정책이 적용되지 않습니다. 이 정책은 상위 요소에 설정된 정책을 재정의하지 않습니다(예: RealmClass.fieldNamingPolicy 에 설정된 경우 모듈 정책은 필드 이름에 계속 적용됩니다.

두 모듈이 정책에 대해 동의하지 않고 그 중 하나가 NO_POLICY 인 경우 오류가 발생하지 않고 다른 모듈이 선택됩니다.

이 정책이 기본값입니다.

public static final RealmNamingPolicy

Java 모델 클래스의 이름은 PascalCase로 변환됩니다. 즉, 모든 단어는 모든 단어의 첫 글자를 대문자로 결합하여 결합됩니다. .NET의 기본 명명 체계는 다음과 같습니다. 예제: "firstName", "FirstName", "mFirstName", "FIRST_NAME", "First$Name"은 모두 "FirstName"이(가) 됩니다.

public static RealmNamingPolicy valueOf (
String name
)
public static RealmNamingPolicy values ()

돌아가기

RealmModule