你的位置:首页 > 软件开发 > Java > 反射——反射API,使用反射创建数组

反射——反射API,使用反射创建数组

发布时间:2016-05-02 21:00:09
反射APIJava.lang.Reflect库① Class类与Java.lang.Reflect类库一起对反射的概念进行支持。② java.lang包下:a) Class<T>:表示对一个正在运 ...

反射API

Java.lang.Reflect库

①   Class类与Java.lang.Reflect类库一起对反射的概念进行支持。

②   java.lang包下:

a)         Class<T>:表示对一个正在运行的Java应用程序中的类和接口,是Reflection的起源。

③   java.lang.reflect包下:

a)         Field类:代表类的成员变量(成员变量也称类的属性)。

b)         Method类:代表类的方法。

c)         Constructor类:代表类的构造方法。

d)         Array类:提供了动态创建数组,以及访问数组的元素的静态方法。

 

 

通过反射实例化对象

① 常情况下我们通过new Object来生成一个类的实例,但有时我们没法直接new,只能通过反射动态生成。

② 实例化无参构造函数的对象,两种方式:

a)         Class.newlnstance();

b)         Class.getConstructor(new Class[]{}).newInstance(new Object[]{})

③ 实化带参构造函数的对象

a)         clazz.getConstructor(Class<?>… parameterTypes).newInstance(Object… initargs)

 

通过反射获取并调用方法

① 得当前类以及超类的public Method(共有方法)

a)         Method[] arrMethod=classType.getMethods();

② 得当前类申明的所有Method

a)         Method[] arrMethod=classType.getDeclaredMethods();

③ 获得当前类以及超类指定的public Method

a)         Method method=classType.getMethod(String name,Class<?>… parameterTypes);

④ 得当前类申明的指定的Method

a)         Method method=classType. getDeclaredMethods (String name,Class<?>… parameterTypes);

⑤ 通过反射动态运行指定Method

a)         Object obj=method.invoke(Object obj,Object… args);

 

通过反射获取并调用属性

① 得当前类以及超类的public Field

a)Field[] arrFields=classType.getField();

② 获得当前类申明的所有Field

a)Field[] arrFields=classType.getDeclaredFields();

③ 获得当前类以及超类指定的public Field

a)       Field field=classType.getField(String name);

④ 获得当前类申明的指定的Field

a)         Field field=classType.getDeclaredField(String name);

⑤ 通过反射动态设定Field的值

a)         field.set(Object obj,Object value);

⑥ 通过反射动态获取Field的值

a)         Object obj=field.get(Object obj);

 

----------------------------------------------------------------------------------------------------

代码

创建一个Employee类

 1 class Employee { 2   private String name; 3   private int age; 4  5   public Employee() { 6     System.out.println("无参构造方法"); 7   } 8  9   public String getName() {10     return name;11   }12 13   public void setName(String name) {14     this.name = name;15   }16 17   public int getAge() {18     return age;19   }20 21   public void setAge(int age) {22     this.age = age;23   }24 25   public Employee(String name, int age) {26     super();27     this.name = name;28     this.age = age;29   }30 31   @Override32   public String toString() {33     return "Employee [name=" + name + ", age=" + age + "]";34   }35 36   private void work() {37     System.out.println("working...");38   }39 40 }

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:反射——反射API,使用反射创建数组

关键词:反射

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。