Home > Java Tech > Mengenal Annotation pada Java Programing

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

}

Categories: Java Tech
  1. annots
    December 9, 2008 at 2:33 am | #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?

  2. arros
    December 9, 2008 at 2:43 am | #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 @.

  3. fahmi
    December 10, 2008 at 12:29 am | #3

    annotation berlaku untuk java 1.5 kan?

  4. arros
    December 10, 2008 at 1:20 am | #4

    @fahmibetul sekali mas, mulai java 1.5(5) keatas yang support annotation

  5. October 31, 2009 at 1:40 am | #5

    anotasi untuk ilmuku nich… tuuuutttt….

  6. warazorori
    July 19, 2010 at 5:09 am | #6

    tambahan contoh untuk mapping Result set ke DTO list

    package org.jwara.id.persistence;
    
    import java.lang.reflect.Field;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.jwara.id.persistence.annotation.Column;
    
    // Arief.Wara
    public class ResultSetMapper {			
    
    	public  List map(ResultSet resultSet, Class clasz) throws InstantiationException, IllegalAccessException, IllegalArgumentException, SQLException{
    		List result = new ArrayList();
    		while (resultSet.next()) {
    			T node = clasz.newInstance();
    			for (Field field : clasz.getDeclaredFields()){
    				Column column = field.getAnnotation(Column.class);
    				if (column==null) continue;
    				field.setAccessible(true);
    				field.set(node, resultSet.getObject(column.value()));			
    			}
    			result.add(node);
    		}
    		return result;
    	}
    
    }
    
    package org.jwara.id.persistence.annotation;
    
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    @Target(ElementType.FIELD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Column {
    
    	String value();
    
    }
    
    

    http://ariefwara.wordpress.com/

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.