11 注解
11.1 内置注解
解释给JVM看的注释
@Override - 检查该方法是否是重写方法
@Deprecated - 标记过时方法
@SuppressWarnings - 压制警告("all")
public class ZJ extends Object{ @Override//重写方法 public String toString() { return super.toString(); } @Test//测试方法 @Deprecated//过时方法 public void method(){ System.out.println(new Date().toLocaleString()); } @SuppressWarnings("all")//压制警告 public void show(){ List list=new ArrayList(); } }
11.2 元注解
作用在其他注解的注解
@Retention - 表示注解在哪些地方有效(value = RetentionPolicy.SOURCE>CLASS>RUNTIME)
@Documented - 表示注解是否包含在用户文档中
@Target - 表示注解可以用的地方(value = ElementType.METHOD)
@Inherited - 标记这个注解是继承于哪个注解类(默认 注解并没有继承于任何子类)
12 反射
概念:获取类的属性和方法,动态获取无限制
/*
获取方法 Method
获取构造器 Constructor
获取成员变量 Field
*/
public class Reflect_1 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Class<?> c=Class.forName("MyConstructor");//传入类路径*此处为相对引用
Constructor<?>[] cons = c.getConstructors();//获取公共方法
for (Constructor con : cons) {
System.out.println(con);
}
System.out.println("-------------");
Constructor<?>[] cons1=c.getDeclaredConstructors();//获取所有方法
for (Constructor con1 : cons1) {
System.out.println(con1);
}
System.out.println("-------------");
Constructor<?> con2=c.getConstructor();
Object obj= con2.newInstance();//传参获取指定方法
System.out.println(obj);
}
}
//暴力反射
public class Reflect_2 {
public static void main(String[] args) throws Exception{
Class<?> c=Class.forName("MyConstructor");
Constructor<?> con=c.getDeclaredConstructor(String.class);
con.setAccessible(true);//解除私有限定
Object obj = con.newInstance("无名");
System.out.println(obj);
}
}
版权声明:本文为niko_2018原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。