package com.data.entity;
import java.util.ArrayList;
import java.util.List;
public class MyList {
private String name;
public MyList() {}
public MyList(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "MyList{" +
"name='" + name + '\'' +
'}';
}
public void setName(String name) {
this.name = name;
}
}
#### 获取类对象-Class
1. 类名.class
Class<类名> 对象名=类名.class
2. 对象名.getClass()
Class 对象名=对象名.getClass();
3. Class.forName
Class 对象名=Class.forName("类的全限定名");
#### 常用方法
1. newInstance(): 利用类对象中的无参构造构建一个类的实例对象
2. Constructor<类名> getDeclaredConstructor(参数列表的类对象1,参数列表的类对象2,..): 获取指定参数列表的有参构造器对象
- newInstance(实参列表): 利用指定有参构造器对象构建类的实例对象
import com.data.entity.MyList;
import java.lang.reflect.Constructor;
public class text8 {
public static void main(String[] args)throws Exception {
Class<MyList> c1=MyList.class;
MyList stu1=c1.newInstance();
// MyList stu=new MyList();
// Class c2=stu.getClass();
Class c3=Class.forName("com.data.entity.MyList");
MyList stu2=(MyList) c3.newInstance();
stu1.setName("张");
stu2.setName("李");
System.out.println(stu1);
System.out.println(stu2);
//获取全属性的有参构造器对象
//Constructor<MyList> con =c1.getDeclaredConstructor(String.class);
Constructor<MyList> con =c3.getDeclaredConstructor(String.class);
//利用有参构造器对象构建的实例
MyList stu3=con.newInstance("王");
System.out.println(stu3);
}
}
### 反射的优缺点
#### 优点
1. 打破封装
2. 提升代码扩展性
#### 缺点
1. 打破封装
2. 降低对象属性的安全性
### 反射掌握重点
1. 类对象和类的对象的区别
2. 获取类对象的三种方式
3. 通过反射构建类的对象的两种方式