JAVA反射

        Java反射可以将外部的class文件进行引用,不必完全读懂它的源码就可以获取、创建和使用class文件的各种方法、成员的一种技术。

package cn.fanshe;

import org.junit.jupiter.api.Test;

import java.lang.reflect.Constructor;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.lang.reflect.Parameter;

import java.util.Arrays;

public class Test_Reflect {

@Test

    public void getclazz()throws ClassNotFoundException {

Class clazz = Class.forName("cn.fanshe.ReflactStu");

        Class clazz1 = ReflactStu.class;

        Class clazz2 =new ReflactStu().getClass();

        System.out.println(clazz);

        System.out.println(clazz1);

        System.out.println(clazz2);

    }

@Test

    public void getConstruct(){

Class clazz=ReflactStu.class;

        Constructor[] constructors = clazz.getConstructors();

        for (Constructor cc:constructors

) {

System.out.println(cc);

            Class[] types = cc.getParameterTypes();

            System.out.println(Arrays.toString(types));

        }

}

@Test

    public void GetMethod()

{

Class aClass =new ReflactStu().getClass();

        Method[] methods = aClass.getMethods();

        for (Method ms:methods

) {

System.out.println(ms.getName());

            Parameter[] parameters = ms.getParameters();

            System.out.println(Arrays.toString(parameters));

        }

}

@Test

    public void GetFiele()

{

try {

Class clazz = Class.forName("cn.fanshe.ReflactStu");

            Field[] fields = clazz.getDeclaredFields();

            for (Field fs:fields

) {

System.out.println(fs.toString());

                System.out.println(fs.getType().getName());

            }

}

catch (Exception e)

{

e.printStackTrace();

        }

}

@Test

    public void CreateObject()throws Exception

{

Class aClass = Class.forName("cn.fanshe.ReflactStu");

        Constructor c = aClass.getConstructor(String.class, int.class);

        Object o = c.newInstance("jack", 15);

        ReflactStu stu = (ReflactStu) o;

        System.out.println("学生的年龄是:"+stu.age+",学生的姓名是:"+stu.name);

        stu.eat(500);

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 类加载器当程序要使用某个类时,如果该类还没有被加载到内存中,则系统会通过加载,链接,初始化这三步来实现对这个类进行...
    Stringer阅读 2,540评论 0 0
  • ## 引言 ### java中创建对象有几种方式? #### 1.使用new关键字 #### 2.使用clone方...
    芋头888阅读 3,698评论 1 0
  • 反射(反射概述) A:反射概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;...
    当幸福来敲门我阅读 3,777评论 0 3
  • 反射,它就像是一种魔法,引入运行时自省能力,赋予了 Java 语言令人意外的活力,通过运行时操作元数据或对象,Ja...
    小刀爱编程阅读 4,200评论 0 4
  • 目录介绍 8.0.0.1 反射的原理是什么?有哪些途径获取到Class对象,Class类的含义和作用是什么?什么是...
    杨充211阅读 4,068评论 1 9