注解:
所谓注解就是,给你的某个包、类、字段、方法、局部变量、方法参数等加个标记,这样我们可以在不方便或者不能直接对包,类,字段等等操作时,选择通过注解来简洁进行操作
泛型:
泛型的本质是参数化类型,所操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
反射:
反射是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部信息。
应用:1.决定一个对象的类型
2.可以得到这个类的修饰符、字段、方法、构造器和父类的信息
3.找出一个接口中定义的常量和方法
4.创建一个运行时才得知名称的类的实例
5.获取和设置对象的字段值,即使字段名称直到运行程序时才得知名称
6.调用一个运行时才知道方法名称的对象的方法
7.创建一个新的数组,其大小和元素的类型直到运行时才知到,然后再修改数组中的元素
看完上面的总结,如果对注解,泛型,反射认识还是有些模糊,那么下面的例子,定能让你豁然开朗,理解都在注释中。
例子:
根据所提供的javabean,自动生成相应的增删改查SQL语句
JavaBean(这里是ProductBean)
package yanda.demo7_28;
import com.java.base.annotation.PrimaryKey;
@Table("product")
public class ProductBean {
//对主键加注解
@PrimaryKey("id")
private int id;
private String name;
private float price;
//对get方法加注解
@Column("id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column("name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column("price")
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
}
Table注解:
package yanda.demo7_28;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(value=ElementType.TYPE)
// 用于指定数据库表名称
@Retention(RetentionPolicy.RUNTIME)
public @interface Table {
String value();
}
PrimaryKey注解:
package yanda.demo7_28;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy