元注解
@Target 可以使用在什么地方
@Retention 生效范围
@Documented 是否生成在doc中
@Inherited 继承
@Target(value={ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface MyAnnotation {
}
反射
获得class的几种方式
public class TestReflection {
public static void main(String[] args) throws ClassNotFoundException {
//全路径forName获取
Class c1 = Class.forName("com.yangxudong.reflection.User");
System.out.println(c1);
//对象的getClass获取
Class c2 = new User().getClass();
//类名.class获取
Class<User> c3 = User.class;
//基本类型的包装类.TYPE
System.out.println(Integer.TYPE);
}
}
class User{ }
Class对象
public class TestClass {
public static void main(String[] args) {
//类
System.out.println(Object.class);
//接口
System.out.println(Comparable.class);
//一维数组
System.out.println(String[].class);
//二维数组
System.out.println(int[][].class);
//注解
System.out.println(Override.class);
//枚举
System.out.println(ElementType.class);
//包装类
System.out.println(Integer.class);
//基本类型
System.out.println(int.class);
//void
System.out.println(void.class);
//Class
System.out.println(Class.class);
}
}
结果
class java.lang.Object
interface java.lang.Comparable
class [Ljava.lang.String;
class [[I
interface java.lang.Override
class java.lang.annotation.ElementType
class java.lang.Integer
int
void
class java.lang.Class