Class类
通过Class类的对象可以获取类的属性、方法,生成类的实例,调用实例的方法、属性。
通过操作Class类的对象,实现对类的操作,实现对对象的操作。
使用反射的步骤
获取想要操作的类的Class对象,调用Class类中的方法,使用反射API来操作这些信息
获取class对象
1.通过Class类的静态方法 : Class class =Class.forName(className);
2.调用对象实例的getClass()方法
3.调用某个类的class属性
具体操作看class初学
https://blog.csdn.net/cp1002327672/article/details/127887843?spm=1001.2014.3001.5502
class类的常用方法:
获取属性
getFields() -所有可访问的公共字段
getDeclaredFields() -所有字段
getField(String name) -返回一个特定的公共字段对象
获取方法
getMethods()-所有公共方法,包括从超类和超接口继承的声明
getDeclaredMethods() -所有方法,包括公共,保护,默认(包)访问和私有方法,但不包括继承的方法
getMethod(String name, Class[] parameterTypes)-返回一个方法对象
反射优缺点
优点
运行期类型的判断,动态类加载
提高了程序的灵活性、扩展性,降低耦合性
提高自适应能力,无需提前硬编码目标类
缺点
性能问题
安全限制
内部暴露
反射API(类及方法)
java.lang.Class
forName()、newInstance()、getFields()等、getMethods()等、getConstructor()
java.lang.reflect.Field
getName()
java.lang.reflect.Method
getName()、invoke()
java.lang.reflect.Constructor
newInstance()