
java反射机制完全详解
#1.反射源头 —Class类
1.1 取得Class类对象 ⭐️
1 2 3 4 5 6 7
| public class Demo { public static void main(String[] args) { Date date = new Date(); Class<? extends Date> class1 = date.getClass(); System.out.println(class1); } }
|
1 2 3 4 5 6 7 8
| public class Demo1 { public static void main(String[] args) { Date date = new Date(); Class<? extends Date> class1 = java.util.Date.class ; System.out.println(class1); } }
|
1 2 3 4 5 6 7 8
| public class Demo2 { public static void main(String[] args) throws ClassNotFoundException { Class<?> forName = Class.forName("java.util.Date"); System.out.println(forName); }
}
|



#2.利用反射实例化对象
2.1public T newInstacne ⭐️⭐️
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class Demo3 { public Demo3() { System.out.println("^^^^"); } public String toString() { return "######"; } } -------------------------------------------------------------------------------- public class Demo4 { public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { Class<?> class1 = Class.forName("反射.Demo3"); Object object = class1.newInstance(); System.out.println(class1); System.out.println(object); } }
|

2.2。工厂设计模式
3.取得类继承结构



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| public class Demo3 extends Object implements Serializable { public Demo3() { System.out.println("^^^^"); }
public String toString() { return "######"; } } -------------------------------------------------------------------------------- public class Demo4 { public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { Class<?> class1 = Class.forName("反射.Demo3"); class1.getName(); class1.getPackage(); class1.getPackage().getName(); class1.getSimpleName();
class1.getSuperclass().getName(); Class<?>[] icls = class1.getInterfaces(); for (int i = 0; i < icls.length; i++) { System.out.println(icls[i].getSimpleName()); }
|


4.反射取得构造方法(invoke)




5.反射取得方法 ⭐️⭐️⭐️





1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class Demo5 {
public static void main(String[] args) throws ClassNotFoundException { getMethodDemo(); } // 获取指定Class中的公共函数 public static void getMethodDemo() throws ClassNotFoundException { Class<?> clazz = Class.forName("反射.Persion"); Method[] methods = clazz.getMethods(); for (int i = 0; i < methods.length; i++) { System.out.println(methods[i]); }
}
|

6.Invoke


–

Author:
John Doe
Permalink:
http://yoursite.com/2018/12/04/java基础/反射/
License:
Copyright (c) 2019 CC-BY-NC-4.0 LICENSE
Slogan:
Do you believe in DESTINY?