全部产品
Search
文档中心

Mobile Platform as a Service:Spesifikasi untuk mendefinisikan antarmuka bisnis

更新时间:Jan 17, 2026

Saat mendefinisikan antarmuka layanan mobile, sisi server tidak dapat menggunakan sintaks Java lengkap. Pembatasan ini disebabkan oleh keterbatasan lingkungan pengembangan mobile—terutama iOS—dan bertujuan menjaga definisi antarmuka tetap sederhana.

Spesifikasi definisi antarmuka mencakup tiga jenis definisi:

Spesifikasi untuk kelas data yang didukung secara internal

Tipe data yang tidak didukung

  • Jangan gunakan nesting multilayer untuk tipe kontainer.

  • Jangan gunakan `List` atau `Map` tanpa menentukan generics.

  • Jangan gunakan tipe array sebagai generic untuk `List` atau `Map`.

  • Byte tunggal tidak didukung. Namun, array byte (`byte[]`) didukung.

  • Jangan gunakan array objek. Gunakan daftar (list) sebagai gantinya.

  • Jangan beri nama properti `data` atau `description`. Nama-nama ini bentrok dengan properti iOS.

  • Kunci untuk `Map` harus berupa `String`.

  • Jangan gunakan kelas abstrak sebagai tipe.

  • Jangan gunakan kelas antarmuka sebagai tipe.

Contoh yang salah:

public class Req {
    private Map<String,List<Person>> map; // Jangan gunakan nesting multilayer untuk tipe kontainer.
    private List<Map<Person>> list; // Jangan gunakan nesting multilayer untuk tipe kontainer.
    private List list1; // Tentukan generics untuk List atau Map.
    private Map map1; // Tentukan generics untuk List atau Map.
    private List<Person[]> listArray; // Jangan gunakan tipe array sebagai generic untuk List atau Map.
    private byte b; // Byte tunggal tidak didukung.
    private Person[] personArray; // Jangan gunakan array objek. Gunakan daftar sebagai gantinya.
    private String description; // Jangan beri nama properti description.
}

Tipe data yang didukung

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 (Catatan: Anda harus menentukan parameter tipe. Jangan gunakan kelas turunan konkret.)
java.util.Map (Catatan: Anda harus menentukan parameter tipe. Jangan gunakan kelas turunan konkret. Tipe kunci harus berupa String.)
Enum
byte[]

Format yang benar:

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;
}

Spesifikasi untuk kelas antarmuka pengguna

Parameter metode

Jangan merujuk ke:

  • Tipe enumerasi

  • Generics selain `Map`, `List`, dan `Set`

  • Kelas abstrak

  • Kelas antarmuka

  • Array tipe primitif

Anda dapat merujuk ke:

  • Kelas entitas konkret. Tipe data referensi harus sesuai dengan tipe objek aktual. Jangan gunakan referensi kelas induk untuk menunjuk objek kelas turunan.

  • Kelas data yang didukung secara native. Hindari nesting tipe koleksi seperti array, `Map`, `List`, atau `Set`.

Berikut adalah contoh yang salah:

Map<String,String[]>
Map<String,List<Person>> // Person adalah kelas entitas konkret.
List<Map<String,Person>>
List<Person[]>

Nilai kembali metode

Jangan merujuk ke:

  • Tipe enumerasi

  • Generics selain `Map`, `List`, dan `Set`

  • Kelas abstrak

  • Kelas antarmuka

  • Array tipe primitif

Anda dapat merujuk ke:

  • Kelas data konkret. Tipe data referensi harus sesuai dengan tipe objek aktual. Jangan gunakan referensi kelas induk untuk menunjuk objek kelas turunan. Misalnya, jangan gunakan referensi `Object` untuk menunjuk objek lain.

    Penting

    Jika kelas induk adalah kelas konkret, tool pembuat kode tidak dapat mendeteksi kesalahan ini.

  • Kelas data yang didukung secara native, sebagaimana didefinisikan di awal topik ini. Hindari nesting tipe koleksi seperti array, `Map`, `List`, atau `Set`. Untuk informasi lebih lanjut, lihat contoh di atas.

Definisi metode

  • Gunakan anotasi `@OperationType`. Tool pembuat kode mengabaikan metode tanpa anotasi ini.

  • Jangan overload metode.

Batasan tool pembuat kode

  • Tool memperbolehkan pewarisan dalam definisi kelas antarmuka, tetapi menggabungkan hierarki kelas tersebut.

  • Tool memperbolehkan tetapi mengabaikan variabel yang didefinisikan dalam kelas antarmuka.

  • Tool memperbolehkan tetapi mengabaikan deklarasi exception dalam metode antarmuka.

  • Satu file sumber hanya boleh berisi satu definisi kelas antarmuka. File tersebut tidak boleh berisi definisi kelas lain, seperti kelas dalam (inner) atau kelas anonim.

  • Kelas antarmuka dan tipe yang dirujuknya harus berupa kelas data yang didukung secara native atau memiliki definisi yang tersedia dalam kode sumber.

Spesifikasi untuk kelas entitas yang didefinisikan pengguna

Definisi bidang

Jangan merujuk ke:

  • Tipe enumerasi

  • Generics selain `Map`, `List`, dan `Set`

  • Kelas abstrak

  • Kelas antarmuka

  • Array tipe primitif

Anda dapat merujuk ke:

  • Kelas entitas konkret. Tipe data referensi harus sesuai dengan tipe objek aktual. Jangan gunakan referensi kelas induk untuk menunjuk objek kelas turunan.

  • Kelas data yang didukung secara native. Hindari nesting tipe koleksi seperti array, `Map`, `List`, atau `Set`. Untuk informasi lebih lanjut, lihat contoh di atas.

  • Properti dengan pengubah `transient` diabaikan.

  • Konstanta yang didefinisikan sebagai `final static int`. Konstanta atau variabel static lain yang tidak memenuhi persyaratan ini diabaikan.

    Catatan

    Hindari mendefinisikan variabel anggota yang diawali dengan is.

Definisi kelas

  • Kelas dapat mewarisi dari kelas entitas lain.

  • Deklarasi metode diabaikan. Tool pembuat kode secara otomatis menghasilkan metode setter dan getter berdasarkan bidang kelas entitas.

Batasan tool pembuat kode

  • Deklarasikan hanya satu properti per baris.

  • Tool memperbolehkan tetapi mengabaikan antarmuka yang diimplementasikan oleh kelas entitas yang didefinisikan pengguna.

  • Satu file sumber hanya boleh berisi satu definisi kelas entitas yang didefinisikan pengguna. File tersebut tidak boleh berisi definisi kelas lain, seperti kelas dalam (inner) atau kelas anonim.

  • Kelas entitas dan tipe yang dirujuknya harus berupa kelas data yang didukung secara native atau memiliki definisi yang tersedia dalam kode sumber.