• Tidak ada hasil yang ditemukan

Annotation. Prepared by Viska Mutiawani.

N/A
N/A
Protected

Academic year: 2021

Membagikan "Annotation. Prepared by Viska Mutiawani."

Copied!
26
0
0

Teks penuh

(1)

Annotation

(2)

Subtopik Annotation

What is annotation?

Kegunaan annotation.

Cara membuat annotation.

Cara menggunakan annotation type.

3 jenis annotation.

Predefined annotation type.

Meta-Annotation.

(3)

Intro

Pada Java rilis 5.0, terjadi banyak penambahan

pada bahasa Java. Salah satu penambahan tersebut

adalah annotation.

Annotation dalam bentuk yang paling sederhana:

@Entity

Simbol at (@) akan memberitahu compiler bahwa

yang mengikuti setelah tanda tersebut adalah

(4)

What is annotation?

Annotation merupakan informasi data tentang kode

program tetapi tidak akan berdampak secara

langsung pada kode.

(5)

Kegunaan Annotation

Memberikan informasi kepada compiler.

Annotation dapat digunakan oleh compiler untuk

mendeteksi error atau supress warning.

Compiler-time dan deployment-time processing

Software tools dapat memproses informasi dari

annotation untuk menghasilkan code, file XML,dll

(6)

Kegunaan Annotation (2)

Runtime processing

Beberapa annotation akan diperiksa pada waktu runtime.

Mengurangi waktu untuk me-maintain “side files”

yang harus up-to-date seiring perubahan code pada

file source.

(7)

Bagaimana digunakannya?

Annotation digunakan untuk mempengaruhi cara

program diperlakukan oleh tool dan library.

Annotation digunakan oleh tool untuk menghasilkan

derived files.

Tools: compiler, IDE, runtime tools

Derived files: Java code yang baru, deployment

(8)

Cara membuat annotation

Anggaplah ada coding pada grup pembangunan

software seperti berikut:

public class Generation3List extends Generation2List {

// Author: John Doe // Date: 3/17/2002

// Current revision: 6

// Last modified: 4/12/2004 // By: Jane Doe

// Reviewers: Alice, Bill, Cindy

// class code goes here }

(9)

Cara membuat annotation (2)

Annotation type mirip seperti interface pada Java,

namun ada beberapa hal khusus pada annotation

yaitu:

Ada simbol @ yang mendahului katakunci interface

Setiap method mendeklarasikan satu unsur pada

annotation type

Deklarasi method tidak boleh ada parameter juga

katakunci throws

Tipe data terbatas pada tipe primitif, String, Class, enums,

annotations dan array dari tipe data sebelumnya

(10)

Cara membuat annotation (3)

Untuk mempermudah, komentar mengenai data

pembuat dapat dibuat menjadi metadata dengan

menggunakan annotation type.

Contoh:

@interface ClassPreamble { String author();

String date();

int currentRevision() default 1;

String lastModified() default "N/A"; String lastModifiedBy() default "N/A"; // Note use of array

String[] reviewers(); }

(11)

Cara menggunakan annotation type

Sesudah annotation type dibuat, anda dapat bebas

menggunakannya sesuai keperluan seperti pada

class, method, deklarasi variabel.

Annotation merupakan modifier khusus yang dapat

digunakan dimanapun sebagaimana modifier lainnya

(ex: public, static, final)

Namun sebaiknya annotation mendahului modifier lain

Annotation dimulai dari simbol @ diikuti oleh annotation

(12)

Cara menggunakan annotation type (2)

Contoh:

@ClassPreamble (

author = "John Doe", date = "3/17/2002", currentRevision = 6,

lastModified = "4/12/2004", lastModifiedBy = "Jane Doe", // Note array notation

reviewers = {"Alice", "Bob", "Cindy"} )

public class Generation3List extends Generation2List {

// class code goes here }

(13)

3 jenis annotation

Ada 3 jenis annotation:

Marker annotation

Single value annotation

Normal annotation

(14)

Marker annotation

Merupakan annotation type tanpa elemen

Annotation paling sederhana

Deklarasi:

/**

* Indicates that the specification of the annotated * API element is preliminary and subject to change. */

public @interface Preliminary { }

Cara pakai (tidak perlu kurung):

@Preliminary

(15)

Single value annotation

Merupakan annotation type yang hanya memiliki satu elemen.

 Elemennya harus diberi nama “value”

Deklarasi:

/**

* Associates a copyright notice with the annotated API element.

*/

public @interface Copyright { String value();

}

Cara pakai (nama elemen dapat dihilangkan dan tidak perlu

simbol =):

@Copyright("2002 Yoyodyne Propulsion Systems") public class SomeClass { ... }

(16)

Normal annotation

Merupakan annotation dengan lebih dari 1 elemen.

Deklarasi:

public @interface RequestForEnhancement { int id();

String synopsis();

String engineer() default "[unassigned]"; String date(); default "[unimplemented]"; }

Cara pakai:

@RequestForEnhancement( id = 2868724,

synopsis = "Enable time-travel", engineer = "Mr. Peabody",

date = "4/1/3007" )

public static void travelThroughTime(Date destination) { ... }

(17)

Predefined Annotation Type

Beberapa annotation yang digunakan oleh Java

compiler (ada dalam java.lang):

@Deprecated

@Override

@SuppressWarnings

@SafeVarargs

(18)

@Deprecated

Digunakan untuk menandai bahwa elemen yang ditandai

sebaiknya tidak digunakan lagi.

List pada Java api:

http://docs.oracle.com/javase/7/docs/api/deprecated-list.html

Contoh:

// Javadoc comment follows /**

* @deprecated

* explanation of why it was deprecated */

@Deprecated

(19)

@Override

Digunakan untuk menandai bahwa method yang ditandai

merupakan method yang di-override (ditimpa) dari

superclass atau interface.

Jika tersilap, maka compiler memberi pesan error.

Contoh:

// mark method as a superclass

// method that has been overridden @Override

(20)

@SupressWarnings

Digunakan untuk tidak memunculkan pesan peringatan.

Peringatan (warning) ada 2 jenis: deprecation dan unchecked.

Warning dapat muncul pada penggunaan generics.

Misal jika menggunakan method yang deprecated, maka

annotation ini dipakai untuk menghilangkan pesan peringatan.

Contoh:

// use a deprecated method and tell // compiler not to generate a warning @SuppressWarnings("deprecation")

void useDeprecatedMethod() { objectOne.deprecatedMethod();

//deprecation warning – suppressed }

(21)

Meta-annotation

Merupakan annotation yang digunakan oleh

annotation lain.

Beberapa yang ada dalam java.lang.annotation:

@Retention

@Documented

@Target

@Inherited

@Repeatable

(22)

@Retention

Annotation @Retention menspesifikkan bagaimana annotation

yang ditandakan disimpan.

Ada 3 jenis policy:

 RetentionPolicy.SOURCE - Annotation yang ditandakan hanya

ditahan (retain) di dalam level source saja dan akan di-ignore oleh compiler. Jadi rentention ini hanya ada dalam source code dan tidak terekod di dalam file .class (file hasil kompilasi)

 RetentionPolicy.CLASS - Annotation yang ditandakan ditahan oleh

compiler pada masa kompilasi, tapi akan di-ignore oleh Java Virtual Machine (JVM). Retention ini merupakan nilai default jika tidak dispesifikkan secara khusus. Retention ini akan masuk

dalam file .class (file hasil kompilasi) tapi tidak digunakan oleh JVM.

 RetentionPolicy.RUNTIME - Annotation yang ditandakan ditahan

oleh JVM jadi ia dapat digunakan semasa runtime. Retention ini ada dalam file .class (file hasil kompilasi) dan digunakan semasa runtime oleh JVM.

(23)

@Documented

Secara default, annotation tidak akan didokumentasi oleh

Javadoc. Namun jika kita menggunakan annotation

@Documented, maka annotation yang kita buat akan

terdokumentasi oleh Javadoc.

Contoh:

// import this to use @Documented import java.lang.annotation.*; @Documented

@interface ClassPreamble { String author();

String date();

int currentRevision() default 1;

String lastModified() default "N/A"; String lastModifiedBy() default "N/A"; // Note use of array

(24)

@Target

Annotation @Target memberi batasan annotation yang

kita buat berlaku untuk elemen Java yang mana.

Ada 8 jenis nilai untuk Target:

ElementType.ANNOTATION_TYPE - targetnya annotation type

ElementType.CONSTRUCTOR - targetnya constructor

ElementType.FIELD - targetnya field atau property

ElementType.LOCAL_VARIABLE - targetnya local variable

ElementType.METHOD - targetnya level method

ElementType.PACKAGE - targetnya deklarasi package

ElementType.PARAMETER - targetnya parameter pada

method

(25)

Contoh penggunaan meta-annotation

Deklarasi:

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.CLASS) public @interface Accessor {

String variableName();

String variableType() default "String"; }

Cara pakai:

@Accessor(variableName = "name") public String myVariable;

(26)

Nested annotation

Deklarasi:

public @interface Reviewer { Name my_name();

//Name value(); }

public @interface Name { String first(); String last(); }

Cara pakai:

@Reviewer(my_name = @Name(first = "James", last = "Gosling"))

public class ComplexAnnotation {

public static void main(String[] args) { // TODO code application logic here

} }

Referensi

Dokumen terkait

%aruskah penganggaran modal bagi suatu proyek multinasional dilakukan dari perspekti!  anak perusahaan yang akan mengelola proyek atau dari perspekti! perusahaan induk

Dalam telur itik, protein lebih banyak terdapat pada bagian kuning telur (17%), sedangkan bagian putihnya terdiri atas ovalbumin (putih telur) dan... Protein telur

Manfaat ekonomi ekosistem hutan mangrove diartikan sebagai nilai ekonomi dari pemanfaatan sumberdaya, dalam hubungan ini nilai ekonomi hutan mangrove adalah manfaat

Pada proses penyisihan dilakukan beberapa variasi konfigurasi sistem reaksi (reaksi penyisihan dalam RHOP, ozon dikontakkan dengan limbah cair dalam skema reaksi

dapat memperlambat penyembuhan luka. Dehidrasi, kondisi edema, obat- obat seperti imunosupresif glukokortikoid, dan antikoagulan steroid, kemoterapi, alkohol, tembakau

Penyampaian SPT Tahunan dapat dilakukan secara langsung di Kantor Pelayanan Pajak tempat Wajib Pajak terdaftar atau dikukuhkan atau tempat lain yang ditetapkan

Berdasarkan pengamatan yang dilakukan terhadap penggilingan beras HR di desa Kutagandok, dapat dibandingkan besarnya rendemen dan susut penggilingan untuk varietas padi

Keberadaan bakteri pengurai sangat berpengaruh terhadap persediaan oksigen yang secara alami terlarut dalam air tambak, sehingga penambahan mikroba pengurai kedalam kolam