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

}

}

相关文章
相关标签/搜索