java的註解

//學了不少框架後,一直使用註解,一直明白其中的原理,只知道是用了反射的原理spring

//今天看了一下,決定很簡單。註解爲了簡化編程,給某個東西起啦個名字,當把這個名字貼到某個地方,這個地方就這個名字的相關意義。編程

//當你想知道這個地方的相關意義時,你能夠經過反射得到該類,而後得到這個名字,經過名字得到這個地方的相關意義。app

//下面這篇博客講的很詳細框架

http://www.javashuo.com/article/p-sroqmnzv-ko.html測試

下面是一個小例子:若是你使用過hibernate或者springBoot中使用JPA就很容易理解下面的例子this

定義一個table類註解.net

@Documentedhibernate

@Retention(RUNTIME)code

@Target({ TYPE, FIELD })blog

public @interface table {

String value(); }

定義了一個culumn註解

@Documented

@Retention(RUNTIME)

@Target({FIELD})

public @interface culumn {

String value(); }

Person類中使用上面兩個註解

@table("person")

public class Person {

@culumn("name")

private String name;

@culumn("age")

private String age;

public String getName() {

	return name;
}

public void setName(String name) {

	this.name = name;
	
}

public String getAge() {

	return age;
}
public void setAge(String age) {

	this.age = age;
}

}

下面使用的測試:

public class client {

public static void main(String[] args) {
	try {
	
		String age="23";
		
		String name="dfd";
		
		StringBuffer buffer = new StringBuffer();
		
	Class<Person> o=(Class<Person>) Class.forName("com.mao.Person");
	
	System.out.println(o);
	
	table t= o.getAnnotation(table.class);
	
	buffer.append("select * from "+t.value());
	
	System.out.println(o.getSimpleName());
	
	Field f[]=o.getDeclaredFields();
	
	System.out.println(o.isAnnotationPresent(table.class));
	
	System.out.println(o.getAnnotation(table.class));
	
	culumn a= f[0].getAnnotation(culumn.class);
	
	buffer.append(" where "+a.value()+"="+name);
	
	buffer.append(" and ");
	
    a= f[1].getAnnotation(culumn.class);
	
	buffer.append(a.value()+"="+age);
	
	System.out.println(buffer);
		
	} catch (ClassNotFoundException e) {
	
		e.printStackTrace();
	}

}

}

相關文章
相關標籤/搜索