我是靠谱客的博主 个性纸鹤,最近开发中收集的这篇文章主要介绍25.反射、Junit、获取Class对象、获取构造方法、获取成员方法、获取成员变量、案例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、Junit

1.Junit主要用于做局部测试,局部测试 局部测试可以快速帮助查找bug

2.测试分类:黑盒测试与白盒测试

3.黑盒测试:功能测试(按照需求的文档来进行测试)与接口测试 比较简单

4.白盒测试:测开编写自动化的脚本

5.Junit使用步骤

定义一个方法  (方法修饰符public  返回值只能使用void)

在方法上加上注解@Test

jar下载地址:https://mvnrepository.com/

新建一个lib文件

将jar放到lib目录下

将jar添加项目依赖

二、反射的概念

1.所有的框架都使用了反射技术

        java中所有类在反射面前都是裸体(可以通过反射获取到所有的资源,包括私有的)

2.反射机制:将类的各个部分组成一个新的对象Class对象

三、获取Class对象

1、通过调用类的getClass方法进行获取,对象.getClass()

2.通过当前类名.class来获取

3.通过Class.forName(完整的包名+类名) 最常用,

四、获取构造方法

 

五、获取成员方法

 

六、获取成员变量

 七、案例

不改变java代码任意获取类中的方法

通过配置文件将需要的数据传输进去(properties文件键值对)

代码-需要获取方法的类

package com.getmethod;

public class Student {
    private String name;
    private int pws;

    public Student() {
    }

    public static void show(String name,int pwd){
        System.out.println(name);
        System.out.println(pwd);
    }
}

配置文件 admin.properties

代码-配置文件工具类

package com.getmethod;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Properutils {
    private static Properutils properutils;
    private static Properties properties;

    private Properutils(){
        properties=new Properties();
        InputStream resourceAsStream =Properutils.class.getResourceAsStream("admin.properties");
        try {
            properties.load(resourceAsStream);
            resourceAsStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static synchronized Properutils getIntance(){
        if (properutils==null){
            properutils=new Properutils();
        }
        return properutils;
    }

    public static String getValue(String key){
        return properties.getProperty(key);
    }
}

代码-测试类

 @Test
    public void show2() throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        String className = Properutils.getIntance().getValue("ClassName");
        String methodName = Properutils.getIntance().getValue("MethodName");
        String parm = Properutils.getIntance().getValue("parm");
        String typeName = Properutils.getIntance().getValue("TypeName");

        Class<?> aClass = Class.forName(className);
        Object o = aClass.newInstance();

        Constructor<?> constructor = aClass.getConstructor();
        Object o1 = constructor.newInstance();

        Class[] getclass = getclass(parm);
        Object[] getty = getobj(parm, typeName);

        if (getclass == null && getclass.length <= 0) {
            Method declaredMethod = aClass.getDeclaredMethod(methodName);
            declaredMethod.invoke(o);
        } else {

            Method declaredMethod = aClass.getDeclaredMethod(methodName, getclass);
            declaredMethod.invoke(o, getty);
        }
    }

    public static Class[] getclass(String parm){
        if (parm==null||"".equals(parm)){
            return null;
        }else {
            List<Class> li=new ArrayList<>();
            String[] split = parm.split(",");
            for (String s:split){
                if (s.equals("String")){
                    li.add(String.class);
                }else if (s.equals("int")){
                    li.add(int.class);
                }else{
                    li.add(Object.class);
                }
            }
            Class[] classes = li.toArray(new Class[li.size()]);
            return classes;
        }
    }
    public static Object[] getobj(String parm,String typeName){
        if (parm==null||"".equals(parm)||typeName==null||"".equals(typeName)){
            return null;
        }else{
            List<Object> li=new ArrayList<>();
            String[] split = parm.split(",");
            String[] split1 = typeName.split(",");
            for (int i=0;i<split.length;i++){
                if (split[i].equals("String")){
                    li.add(split1[i]);
                }else if (split[i].equals("int")){
                    li.add(Integer.parseInt(split1[i]));
                }else {
                    li.add((Object)split1[i]);
                }
            }
            Object[] objects = li.toArray(new Object[li.size()]);
            return objects;
        }
    }

最后

以上就是个性纸鹤为你收集整理的25.反射、Junit、获取Class对象、获取构造方法、获取成员方法、获取成员变量、案例的全部内容,希望文章能够帮你解决25.反射、Junit、获取Class对象、获取构造方法、获取成员方法、获取成员变量、案例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部