Pacote io.realm

Classe RealmAny


  • public class RealmAny
    extends Object
    RealmAny é usado para representar um Realm value polimórfico.

    A qualquer momento, uma instância desta classe armazena um valor definido de um tipo definido. Se, por exemplo, for um valor duplo, você poderá chamar asDouble() para extrair esse valor. Você pode chamar getType() para descobrir que tipo de valor está armazenado atualmente. Chamar asDouble() em uma instância que não armazena um duplo criaria um ClassCastException.

    O RealmAny se comporta como um tipo de valor em todos os tipos suportados, exceto em Objeto de Realm. Isso significa que o Realm não persistirá nenhuma alteração no valor RealmAny, exceto quando o tipo for Objeto de Realm. Quando um RealmAny mantém um Objeto de Realm, ele mantém apenas a referência a ele, não uma cópia do objeto. Portanto, as modificações no Objeto de Realm são refletidas no valor RealmAny, inclusive se o objeto for excluído. Como as instâncias do RealmAny são imutáveis, uma nova instância é necessária para atualizar um atributo do RealmAny.

     
          anObject.realmAnyAttribute = RealmAny.valueOf(5);
          anObject.realmAnyAttribute = RealmAny.valueOf(10.f);
     
     
    É crucial entender que o ato de extrair um valor de um tipo específico requer conhecimento definido sobre o tipo armazenado. Chamar um método de getter para qualquer tipo específico, que não seja do mesmo tipo que o valor armazenado, geraria uma exceção.

    Nossa recomendações para lidar com o polimorfismo RealmAny é escrever um caso de switch em torno do tipo RealmAny e sua classe de valor interna.

     
          RealmAny realmAny = aRealmObject.realmAnyAttribute;
    
          switch (realmAny.getType()) {
              case OBJECT:
                  if (realmAny.getValueClass().equals(DogRealmModel.class)) {
                      DogRealmModel value = realmAny.asRealmModel(DogRealmModel.class);
                  }
              case INTEGER:
                  performAction(realmAny.asInteger());
                  break;
              case BOOLEAN:
                  performAction(realmAny.asBoolean());
                  break;
              case STRING:
                  performAction(realmAny.asString());
                  break;
              case BINARY:
                  performAction(realmAny.asBinary());
                  break;
              case DATE:
                  performAction(realmAny.asDate());
                  break;
              case FLOAT:
                  performAction(realmAny.asFloat());
                  break;
              case DOUBLE:
                  performAction(realmAny.asDouble());
                  break;
              case DECIMAL128:
                  performAction(realmAny.asDecimal128());
                  break;
              case OBJECT_ID:
                  performAction(realmAny.asObjectId());
                  break;
              case UUID:
                  performAction(realmAny.asUUID());
                  break;
              case NULL:
                  performNullAction();
                  break;
          }
     
     

    getValueClass() retorna a classe Java que representa o valor interno envolto pela instância RealmAny. Se a classe resultante for uma realização de RealmModel , asRealmModel() poderá ser chamado para converter o valor RealmAny em uma referência de objeto de Realm.

    Os valores RealmAny também podem ser classificados. A ordem de classificação usada entre diferentes tipos de RealmAny, do mais baixo para o mais alto, é:

    1. Boolean
    2. Byte/Curto/Inteiro/Long/Float/Duplo/Decimal128
    3. byte[]/String
    4. Data
    5. ObjectId
    6. UUID
    7. RealmObject
    Isso tem implicações em como RealmQuery.sort(String), RealmQuery.minRealmAny(String) e RealmQuery.maxRealmAny(String) funcionam. Especificamente, min() e max() não levarão apenas em conta os campos numéricos, mas usarão a ordem de classificação para determinar o valor "maior" ou "menor".
    • Resumo da classe aninhada

      Classes agrupadas 
      Modificador e tipo classe Descrição
      static class  RealmAny.Type
      enumeração descrevendo todos os tipos suportados pelo RealmAny.
    • Detalhes do método

      • getType

        public RealmAny.Type getType()
        Obtém o tipo interno deste objeto RealmAny.
        Retorna:
        o RealmAny.Type interno
      • getValueClass

        @Nullable
        public Class<?> getValueClass()
        Retorna a classe Java que representa o valor interno envolto por este valor de RealmAny.
        Retorna:
        a classe que representa o valor interno envolto por este valor RealmAny.
      • valor de

        public static RealmAny valueOf​(@Nullable
                                       Byte value)
        Cria um novo RealmAny com o valor especificado. Se o valor não for nulo, o tipo será RealmAny.Type.INTEGER ; caso contrário, RealmAny.Type.NULL .
        Parâmetros:
        value - o valor RealmAny.
        Retorna:
        um novo RealmAny contendo um valor de Byte.
      • valor de

        public static RealmAny valueOf​(@Nullable
                                       Float value)
        Cria um novo RealmAny com o valor especificado. Se o valor não for nulo, o tipo será RealmAny.Type.FLOAT ; caso contrário, RealmAny.Type.NULL .
        Parâmetros:
        value - o valor RealmAny.
        Retorna:
        um novo RealmAny de um Flutuador.
      • valor de

        public static RealmAny valueOf​(@Nullable
                                       String value)
        Cria um novo RealmAny com o valor especificado. Se o valor não for nulo, o tipo será RealmAny.Type.STRING ; caso contrário, RealmAny.Type.NULL .
        Parâmetros:
        value - o valor RealmAny.
        Retorna:
        um novo RealmQualquer uma de uma String.
      • valor de

        public static RealmAny valueOf​(@Nullable
                                       byte[] value)
        Cria um novo RealmAny com o valor especificado. Se o valor não for nulo, o tipo será RealmAny.Type.BINARY ; caso contrário, RealmAny.Type.NULL .
        Parâmetros:
        value - o valor RealmAny.
        Retorna:
        um novo RealmAny de um byte[].
      • valor de

        public static RealmAny valueOf​(@Nullable
                                       Date value)
        Cria um novo RealmAny com o valor especificado. Se o valor não for nulo, o tipo será RealmAny.Type.DATE ; caso contrário, RealmAny.Type.NULL .
        Parâmetros:
        value - o valor RealmAny.
        Retorna:
        um novo RealmAny de uma data.
      • valor de

        public static RealmAny valueOf​(@Nullable
                                       UUID value)
        Cria um novo RealmAny com o valor especificado. Se o valor não for nulo, o tipo será RealmAny.Type.UUID ; caso contrário, RealmAny.Type.NULL .
        Parâmetros:
        value - o valor RealmAny.
        Retorna:
        um novo RealmAny de um UUID.
      • nullValue

        public static RealmAny nullValue()
        Cria um novo RealmAny de um valor nulo.
        Retorna:
        uma nova instância RealmAny de um valor nulo.
      • valor de

        public static RealmAny valueOf​(@Nullable
                                       RealmModel value)
        Cria um novo RealmAny com o valor especificado.
        Parâmetros:
        value - o valor RealmAny.
        Retorna:
        um novo RealmAny de um RealmModel.
      • IsNull

        public boolean isNull()
        Retorna verdadeiro se o valor interno for nulo; caso contrário, retorna falso.
        Retorna:
        true se o valor interno for nulo, false caso contrário.
      • asByte

        byte público asByte()
        Obtém este valor como um Byte se for um, caso contrário, gera exceção.
        Retorna:
        um byte.
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • ascurto

        curto público ascurto()
        Obtém esse valor como Curto se for um, caso contrário, gera exceção.
        Retorna:
        um curto.
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • asInteger

        Public Integer asInteger()
        Obtém este valor como um Inteiro se for um, caso contrário, gera exceção.
        Retorna:
        um número inteiro.
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • asLong

        public Long asLong()
        Obtém esse valor como um Long se for um, caso contrário, lança exceção.
        Retorna:
        um longo.
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • asBoolean

        public boolean asBoolean()
        Obtém este valor como booleano se for um, caso contrário, lança exceção.
        Retorna:
        um booleano.
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • asFloat

        public Flutuação asFloat()
        Obtém este valor como Flutuante se for um, caso contrário, gera exceção.
        Retorna:
        um flutuador.
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • asDouble

        public Double asDouble()
        Obtém esse valor como um duplo se for um, caso contrário, lança exceção.
        Retorna:
        um duplo.
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • asString

        string pública asString()
        Obtém esse valor como uma string se for um, caso contrário, lança exceção.
        Retorna:
        Uma string.
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • asBinary

        byte público[] asBinary()
        Obtém este valor como um byte[] se for um, caso contrário, gera exceção.
        Retorna:
        um byte[].
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • asDate

        data pública asDate()
        Obtém esse valor como uma data, se for um, caso contrário, gera exceção.
        Retorna:
        uma data.
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • asObjectId

        public ObjectId asObjectId ()
        Obtém esse valor como ObjectId se for um, caso contrário, gera exceção.
        Retorna:
        um ObjectId.
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • asUUID

        UUID público comoUUID()
        Obtém esse valor como UUID se for um, caso contrário, gera exceção.
        Retorna:
        um UUID.
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • asDecimal128

        public Decimal128 asDecimal128()
        Obtém esse valor como Decimal128 se for um; caso contrário, gera exceção.
        Retorna:
        um Decimal128.
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • asRealmModel

        public <T extends RealmModel> T asRealmModel​(Class<T> clazz)
        Obtém esse valor como um RealmModel se for um, caso contrário, gera exceção.
        Parâmetros do tipo:
        T - o tipo RealmModel para converter o valor interno.
        Retorna:
        um RealmModel do tipo T.
        Lançamentos:
        ClassCastException - se esse valor não for do tipo esperado.
      • hashCode

        public final int hashCode()
        O código hash de um RealmAny é, exatamente, o código hash do seu valor.
        Substitui:
        hashCode na aula Object
        Retorna:
        verdadeiro se o destino tiver o mesmo valor
        Lançamentos:
        NullPointerException - se o valor interno for nulo
      • é igual a

        public final boolean equals​(@Nullable
                                    Object other)
        Dois RealmAnys são .equals se e somente se seus conteúdos forem iguais.
        Substitui:
        equals na aula Object
        Parâmetros:
        other - comparar alvo
        Retorna:
        verdadeiro se o destino tiver o mesmo valor