java反射机制:
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和
属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
代码示例:
Cats类:
1 package cn.happy.demo; 2 3 @SuppressWarnings(value="unchecked") 4 @Deprecated 5 public class Cats { 6 //无参构造 7 public Cats(){} 8 //带参构造 9 public Cats(String str){} 10 //无参方法 11 public void into(){} 12 //代参方法 13 public void into(String str){} 14 //内部类 15 class inner{} 16 17 }
CatDemos类:
1 package cn.happy.demo; 2 3 import java.lang.annotation.Annotation; 4 import java.lang.reflect.Constructor; 5 import java.lang.reflect.Method; 6 7 public class CatDemos { 8 9 public static void main(String[] args) { 10 11 Class<Cats> clas = Cats.class; 12 Constructor[] con = clas.getDeclaredConstructors(); 13 System.out.println("*********获取构造方法*********"); 14 for (Constructor constructor2 : con) { 15 System.out.println(constructor2.toString()); 16 } 17 System.out.println("************获取构造方法结束**********"); 18 Method[] me = clas.getDeclaredMethods(); 19 System.out.println("***********获得公共方法开始************"); 20 for (Method method : me) { 21 System.out.println(method.toString()); 22 } 23 System.out.println("***********获得公共方法结束************"); 24 Method[] mt = clas.getMethods(); 25 System.out.println("************获取全部方法************"); 26 for (Method method : mt) { 27 System.out.println(method.toString()); 28 } 29 System.out.println("************获取全部方法结束************"); 30 System.out.println("***************获得包************"); 31 Package pg = clas.getPackage(); 32 System.out.println(pg.toString()); 33 34 Annotation[] an = clas.getAnnotations(); 35 System.out.println("************获得全部注释*************"); 36 for (Annotation annotation : an) { 37 System.out.println(annotation.toString()); 38 } 39 System.out.println("*******************************"); 40 Class[] cs = clas.getDeclaredClasses(); 41 for (Class class1 : cs) { 42 System.out.println(class1.toString()); 43 } 44 System.out.println("***************************"); 45 try { 46 Class s = Class.forName("cn.happy.demo.Cats$inner"); 47 System.out.println(s.getDeclaringClass()); 48 System.out.println(s.getPackage()); 49 System.out.println(s.getSuperclass()); 50 } catch (ClassNotFoundException e) { 51 e.printStackTrace(); 52 } 53 } 54 55 }
执行结果: