Saturday, December 6, 2008

Mengenal Annotation pada Java Programing



Assalamu'alaikum... dah lama ternyata ngga ngpost di blog kesayanganku ini, dari pada ngga posting2 mending ngeshare ilmu aja deh... ini tentang Annotation tapi bukan tentang annots yang ini.
Pengennya mau gesend artikelnya ke ilmukomputer.com, tapi ngga tau kok tiba2 usernya ngga bisa kepake, hilang kali ya gara2 dihack kemaren.

yowislah langsung aja..

Annotation merupakan informasi data tentang kode program tetapi tidak akan berdampak secara langsung pada kode, atau lebih dikenal dengan nama meta tag.
Lalu apa kegunaan dari annotation ?
1.Memberikan informasi kepada compiler - Annotation dapat digunakan oleh compiler untuk mendeteksi error atau suppress warning.
2.Compiler-time dan deployment-time processing - Software tools dapat memproses informasi dari annotation untuk men-generate code, XML file, dan masih banyak lagi.
3.Runtime processing - Beberapa annotation akan diperiksa pada waktu runtime.

Annotation dapat diaplikasikan pada class, field, method, dan elemen program yang lain.

Annotation sering berdiri sendiri,dan mempunyai elemen baik dengan nama ataupun tidak :

@Author(
name = "Benjamin Franklin",
date = "3/27/2003"
)
class MyClass() { }

atau

@SuppressWarnings(value="unchecked")
void myMethod() { }


Jika hanya ada satu elemen saja bernama "value," maka nama dapat dihilangkan, sbb :

@SuppressWarnings("unchecked")
void myMethod() { }

Begitu juga jika annotation tidak mempunyai elemen, tanda kurung dapat dihilangkan, sbb :

@Override
void myMethod() { }

Documentation
Annotation sering digunakan untuk menggantikan komentar pada program.
Pada program biasanya menambahkan komentar pada program untuk memberikan informasi2 yang penting, sbb :

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

}


Untuk menambahkan dengan annotation seperti pada komentar pada class Generation3List diatas, kita harus mendefinisikan tipe annotation. Sintaknya sebagai berikut :

@interface ClassPreamble {
String author();
String date();
int currentRevision() default 1;
String lastModified() default "N/A";
String lastModifiedBy() default "N/A";
String[] reviewers(); // Note use of array
}


jika dilihat sekilas pendefinisian tipe annotation mirip dengan pendefinisian interface, bedanya pada tipe annotation didahului dengan karakter @ (@ = "AT" sebagai tipe Annotation) dan bisa diberi nilai default.

Kemudian kita bisa mendefinisikan tipe annotation pada class Generation3List, sbb :

@ClassPreamble (
author = "John Doe",
date = "3/17/2002",
currentRevision = 6,
lastModified = "4/12/2004",
lastModifiedBy = "Jane Doe"
reviewers = {"Alice", "Bob", "Cindy"} // Note array notation
)
public class Generation3List extends Generation2List {

// class code goes here

}


Catatan : Untuk membuat informasi2 pada ClassPreamble muncul pada saat pembuatan javadoc, kita harus mendefinisikan annotasi @Documented, sbb:

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

@Documented
@interface ClassPreamble {

// Annotation element definitions

}


Annotation digunakan oleh compiler
Ada tiga tipe annotation yang secara automatis akan didefinisikan : @Deprecated, @Override, dan @SuppressWarnings.
@Deprecated -- Digunakan untuk menandai bahwa elemen yang ditandai sudah tidak digunakan lagi, mungkin karena suatu alasan dari developer. Kita menggunakan tag @deprecated untuk mendocumentasikannya, sbb :

// Javadoc comment follows
/**
* @deprecated
* explanation of why it was deprecated
*/
@Deprecated
static void deprecatedMethod() { }
}


@Override -- Digunakan untuk menandai bahwa method merupakan method yang di-override dari supperclass atau interface.

// mark method as a superclass method
// that has been overridden
@Override
int overriddenMethod() { }


compiler akan menampilkan kesalahan jika terjadi kesalahan pada waktu melakukan overriden.

@SuppressWarnings -- Digunakan untuk tidak memunculkan pesan peringatan, misalnya kita menggunakan method yang telah deprecated, kita bisa menggunakan annotation ini untuk menghilangkan pesan peringatan bahwa method yang kita pakai adalah deprecated :

// use a deprecated method and tell
// compiler not to generate a warning
@SuppressWarnings("deprecation")
void useDeprecatedMethod() {
objectOne.deprecatedMethod(); //deprecation warning - suppressed
}



agar annotation bisa dilihat saat runtime, maka gunakan @Retention(RetentionPolicy.RUNTIME), sbb:

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@interface AnnotationForRuntime {

// Elements that give information
// for runtime processing

}

4 comments:

  1. eh ada nama saya disini, hihihi *Ge-eR*

    em, ini cuma untuk bahasa pemrograman java aja atau berlaku untuk bahasa pemrograman yg lain juga?

    ReplyDelete
  2. Hahaha.... ga usah GE-ER, Biar tambah tenar to...
    Hampir tiap bahasa mempunyai metatag seperti ini, cuman tag2nya berbeda misalkan saja di html ada tag untuk META sedangkan java menggunakan karakter @.

    ReplyDelete
  3. annotation berlaku untuk java 1.5 kan?

    ReplyDelete
  4. @fahmi
    betul sekali mas, mulai java 1.5(5) keatas yang support annotation

    ReplyDelete