美文网首页
JAVA基础之反射

JAVA基础之反射

作者: 衣锦昼行 | 来源:发表于2019-07-10 10:46 被阅读0次

1.通过反射获取类
获取反射对象(反射入口):Class

  • 1.Class.forName(全类名)
try {
    Class<?> Clazz1 = Class.forName("包名.类名");
}catch(ClassNotFoundException e){
    e.printStackTrack();
}

2.类名.class

Class<?> Clazz2 = 类名.class;

3.对象.getClass()

类名 XXX = new 类名();
Class<?> Clazz3 = XXX.getClass();

2.获取公共方法

//class入口
Class<?> Clazz = null; 
try {
    Class<?> Clazz = Class.forName("包名.类名");
}catch(ClassNotFoundException e){
    e.printStackTrack();
}

Method[] methods = Clazz.getMethods();//获取所有的公共方法(不仅是当前类,还有父类的方法)
Method[] declareMethods = Clazz.getDeclareMethods();//获取当前类的所有方法(1.只能是当前类 2.忽略访问修饰符限制)

3.获取所有的接口

//class入口
Class<?> Clazz = null; 
try {
    Class<?> Clazz = Class.forName("包名.类名");
}catch(ClassNotFoundException e){
    e.printStackTrack();
}
Class<?>[] interfaces = Clazz.getInterfaces();
for(Class<?> inter:interfaces){
         System.out.println(inter);
}

4.获取所有父类

//class入口
Class<?> Clazz = null; 
try {
    Class<?> Clazz = Class.forName("包名.类名");
}catch(ClassNotFoundException e){
    e.printStackTrack();
}
Class<?> superclass = Clazz.getSuperclass();
System.out.println(superclass);

5.获取所有构造方法

//class入口
Class<?> Clazz = null; 
try {
    Class<?> Clazz = Class.forName("包名.类名");
}catch(ClassNotFoundException e){
    e.printStackTrack();
}
Constructors<?>[] constructors = Clazz.getConstructors();
for(){}

6.获取所有的属性

//class入口
Class<?> Clazz = null; 
try {
    Class<?> Clazz = Class.forName("包名.类名");
}catch(ClassNotFoundException e){
    e.printStackTrack();
}
 Field[] fields = Clazz.getFields();//公共属性
 Field[] declareFields = Clazz.getDeclareFields();//所有属性

7.获取当前反射所代表类(接口)的对象(实例)

Class<?> Clazz = null; 
try {
    Class<?> Clazz = Class.forName("包名.类名");
}catch(ClassNotFoundException e){
    e.printStackTrack();
}
Object instance = Clazz.newInstance();

8.修改访问权限

//使用反射时,如果因为访问修饰符限制造成异常,可以通过
属性(方法).setAccessible(true);将属性或方法修改为可访问

方法的调用通过invoke();

相关文章

  • Java基础之反射

    Java基础之—反射(非常重要)Java中反射机制详解Java进阶之reflection(反射机制)——反射概念与...

  • 反射

    Java基础之—反射(非常重要)

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • Java基础之java反射

    什么是反射简单地说,反射就是在JVM运行期间,通过类名,就可以拿到类的所有信息,如变量,方法等 Class该类位于...

  • Java基础之—反射

    一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象...

  • java基础之反射

    反射概述 JAVA反射机制是在运行状态中,对于任意一个类都能够知道这个类的所有属性和方法; 对于任意一个对象,都能...

  • Java基础之—反射

    1)类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进...

  • Java基础之反射

    Java-Reflect Class类的使用 方法的反射 成员变量的反射 构造函数的反射 Java类加载机制 一、...

  • JAVA基础之反射

    1.认识反射 利用对象找到对象的出处,在object中类有一个方法叫做getClass(); 2.反射机制 cla...

网友评论

      本文标题:JAVA基础之反射

      本文链接:https://www.haomeiwen.com/subject/iquckctx.html