Todos os produtos
Search
Central de documentação

Mobile Platform as a Service:Especificações para definição de interfaces de negócios

Última atualização: Jun 28, 2026

Ao definir interfaces de serviço móvel, o servidor não pode utilizar a sintaxe completa do Java. Essa restrição ocorre devido a limitações nos ambientes de desenvolvimento móvel, especialmente no iOS, e ajuda a manter as definições de interface simples.

As especificações de definição de interface abrangem três tipos de definições:

Especificações para classes de dados com suporte interno

Tipos de dados não compatíveis

  • Não use aninhamento multicamada para tipos de contêiner.

  • Não utilize List ou Map sem especificar genéricos.

  • Não use um tipo de array como genérico para List ou Map.

  • Bytes únicos não são compatíveis. No entanto, arrays de bytes (byte[]) são aceitos.

  • Não utilize arrays de objetos. Use uma lista.

  • Não nomeie propriedades como data ou description. Esses nomes entram em conflito com propriedades do iOS.

  • A chave de um Map deve ser uma String.

  • Não use classes abstratas como tipos.

  • Não use classes de interface como tipos.

Exemplos incorretos:

public class Req {
    private Map<String,List<Person>> map; // Do not use multilayer nesting for container types.
    private List<Map<Person>> list; // Do not use multilayer nesting for container types.
    private List list1; // Specify generics for List or Map.
    private Map map1; // Specify generics for List or Map.
    private List<Person[]> listArray; // Do not use an array type as a generic for List or Map.
    private byte b; // Single bytes are not supported.
    private Person[] personArray; // Do not use object arrays. Use a list instead.
    private String description; // Do not name a property description.
}

Tipos de dados compatíveis

boolean, char, double, float, int, long, short
java.lang.Boolean
java.lang.Character
java.lang.Double
java.lang.Float
java.lang.Integer
java.lang.Long
java.lang.Short
java.lang.String
java.util.List (Note: You must specify type parameters. Do not use concrete child classes.)
java.util.Map (Note: You must specify type parameters. Do not use concrete child classes. The key type must be String.)
Enum
byte[]

Formato correto:

public class Req {
    private String s = "ss";
    private int i;
    private double d;
    private Long l;
    private long l1;
    private boolean b;
    private List<String> stringList;
    private List<Person> personList;
    private Map<String,Person> map;
    private byte[] bytes;
    private EnumType type;
}

public class Person {
    private String name;
    private int age;
}

Especificações para classes de interface do usuário

Parâmetros de método

Não referencie:

  • Tipos de enumeração

  • Genéricos diferentes de Map, List e Set

  • Classes abstratas

  • Classes de interface

  • Arrays de tipos primitivos

É permitido referenciar:

  • Classes de entidade concretas. O tipo de dados da referência deve corresponder ao tipo real do objeto. Não use uma referência de classe pai para apontar para um objeto de classe filha.

  • Classes de dados com suporte nativo. Não aninhe tipos de coleção como arrays, Map, List ou Set.

Os exemplos a seguir são incorretos:

Map<String,String[]>
Map<String,List<Person>> // Person is a concrete entity class.
List<Map<String,Person>>
List<Person[]>

Valores de retorno de método

Não referencie:

  • Tipos de enumeração

  • Genéricos diferentes de Map, List e Set

  • Classes abstratas

  • Classes de interface

  • Arrays de tipos primitivos

É permitido referenciar:

  • Classes de dados concretas. O tipo de dados da referência deve corresponder ao tipo real do objeto. Não use uma referência de classe pai para apontar para um objeto de classe filha. Por exemplo, não use uma referência Object para apontar para outros objetos.

    Importante

    Se a classe pai for uma classe concreta, a ferramenta de geração de código não conseguirá detectar essa falha.

  • Classes de dados com suporte nativo, conforme definido no início deste tópico. Não aninhe tipos de coleção como arrays, Map, List ou Set. Para mais informações, consulte os exemplos acima.

Definições de método

  • Use a anotação @OperationType. A ferramenta de geração de código ignora métodos sem essa anotação.

  • Não sobrecarregue métodos.

Limitações da ferramenta de geração de código

  • A ferramenta permite herança nas definições de classe de interface, mas mescla a hierarquia de classes.

  • A ferramenta permite variáveis definidas em classes de interface, mas as ignora.

  • A ferramenta permite declarações de exceção em métodos de interface, mas as ignora.

  • Um arquivo source pode conter apenas uma definição de classe de interface. Não é possível incluir outras definições de classe, como classes internas ou anônimas.

  • A classe de interface e seus tipos referenciados devem ser classes de dados com suporte nativo ou ter definições disponíveis no código-fonte.

Especificações para classes de entidade definidas pelo usuário

Definições de campo

Não referencie:

  • Tipos de enumeração

  • Genéricos diferentes de Map, List e Set

  • Classes abstratas

  • Classes de interface

  • Arrays de tipos primitivos

É permitido referenciar:

  • Classes de entidade concretas. O tipo de dados da referência deve corresponder ao tipo real do objeto. Não use uma referência de classe pai para apontar para um objeto de classe filha.

  • Classes de dados com suporte nativo. Não aninhe tipos de coleção como arrays, Map, List ou Set. Para mais informações, consulte os exemplos acima.

  • Propriedades com o modificador transient são ignoradas.

  • Constantes definidas como final static int. Outras constantes ou variáveis estáticas que não atendam a esse requisito são ignoradas.

    Nota

    Evite definir variáveis de membro que comecem com is.

Definições de classe

  • Classes podem herdar de outras classes de entidade.

  • Declarações de métodos são ignoradas. A ferramenta de geração de código cria automaticamente métodos setter e getter com base nos campos da classe de entidade.

Limitações da ferramenta de geração de código

  • Declare apenas uma propriedade por linha.

  • A ferramenta permite interfaces implementadas por classes de entidade definidas pelo usuário, mas as ignora.

  • Um arquivo source pode conter apenas uma definição de classe de entidade definida pelo usuário. Não é possível incluir outras definições de classe, como classes internas ou anônimas.

  • A classe de entidade e seus tipos referenciados devem ser classes de dados com suporte nativo ou ter definições disponíveis no código-fonte.