06_单元测试与反射

【Java单元测试】实习项目实际问题1--被测试函数中私有变量反射调用 toString()函数中调用了ChargeBlock类中的私有变量startHour1,在一开始写testToString()函数的时候考虑的是直接在测试的时候调用对应的getxxx()函数,但是又想到此时getxxx()函数并没有被测试,不能默认getxxx()函数是不会出错的,所以选择反射调用获取私有变量,然后进行测试。2.测试函数处理私有变量的具体过程最好提出来作为一个函数,使用到反射调用的时候直接调用此函数,降低大块代码重复性(这是之后遇到的问题,刚写的时候遇到的被测试类中代码重复性不是很高。 阅读详情

单元测试

什么是单元测试
  • 就是针对最小的功能单位(方法),编写测试代码对其进行正确性测试
  • Junit 单元测试框架:可以用来对方法进行测试,它是第三方公司开源出来的(IDEA 以及集成了此框架)
注解说明
@Test测试类中的方法必须用它修饰才能成为测试方法,才能启动执行
@Before用来修饰一个实例方法,该方法会在每一个测试方法执行之前执行一次
@After用来修饰一个实例方法,该方法会在每一个测试方法执行之后执行一次
@BeforeClass用来修饰一个静态方法,该方法会在所有测试方法之前只执行一次
@AfterClass用来修饰一个静态方法,该方法会在所有测试方法之后只执行一次
  • 在测试方法执行前执行的方法,常用于:初始化资源
  • 在测试方法执行完后再执行的方法,常用于:释放资源
// 被测试的方法

/**
 * 字符串工具类
 */
public class StringUtil {
    public static void printNumber(String name) {
        if (name == null) {
            System.out.println(0);
            return;// 停掉方法
        }
        System.out.println("名字的长度是:" + name.length());
    }

    // 求字符串最大索引
    public static int getMaxIndex(String data) {
        if (data == null) {
            return -1;
        }
        return data.length();
    }

}
// 进行测试的类

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

/**
 * 测试类
 * 测试方法必须做到:公共、无参、无返回值
 * 测试方法上面必须声明 @Test 注解
 */

public class StringUtilTest {
    @Before
    public void test1() {
        System.out.println("------test1执行了------");
    }

    @Test
    public void testPrintNumber() {
        StringUtil.printNumber(null);
    }

    @Test
    public void testGetMaxIndex() {
        int index1 = StringUtil.getMaxIndex(null);
        System.out.println(index1);
        int index2 = StringUtil.getMaxIndex("admin");
        System.out.println(index2);

        // 断言机制:程序员可以通过预测业务方法的结果
        Assert.assertEquals("方法内部有bug!", 4, index2);
    }
}

反射

认识反射

反射就是:加载类,并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器)

获取类
public class Test {
    public static void main(String[] args) throws Exception {
        // 获取Class对象的三种方式
        // 方式一
        Class c1 = Student.class;
        // 获取类的名字
        // 获取全类名  【全类名 = 包名.类的简名】
        System.out.println(c1.getName());  // login.Student ()
        // 获取类的简名
        System.out.println(c1.getSimpleName());  // Student

        // 方式二
        Class c2 = Class.forName("login.Student");
        System.out.println(c2 == c1);  // true

        // 方式三
        Student s = new Student();
        Class c3 = s.getClass();
        System.out.println(c3 == c2);  // true
    }
}

class Student {
    private String name;
    private int age;
}
获取类的构造器
// Cat 类 (前置资源)

public class Cat {
    private String name;
    private int age;

    public Cat() {
    }

    public Cat(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
// 第一部分展示

import java.lang.reflect.Constructor;

public class Test {
    public static void main(String[] args) throws Exception {
        // 1. 反射第一步:必须先得到这个类的 Class 对象
        Class c = Cat.class;

        // 2. 获取类的全部构造器
        // Constructor[] constructors = c.getConstructors();  // getConstructors 功能当构造器为私有时,获取不到
        Constructor[] constructors = c.getDeclaredConstructors();  // 不管是否私有,都能拿到全部的构造器

        // 3. 遍历数组中的每个构造器对象
        for (Constructor constructor : constructors) {
            System.out.println(constructor.getName() + "--->" +
                    constructor.getParameterCount());
        }
        /*
        * 运行结果:
        *
        *       login.Cat--->0
        *       login.Cat--->2
        * 
        * */
    }
}
// 第二部分展示

import java.lang.reflect.Constructor;

public class Test {
    public static void main(String[] args) throws Exception {
        // 1. 反射第一步:必须先得到这个类的 Class 对象
        Class c = Cat.class;

        // 2. 获取某个构造器:无参构造器
        Constructor constructor = c.getConstructor();
        System.out.println(constructor.getName() + "--->" +
                constructor.getParameterCount());  // login.Cat--->0

        // 3. 获取有参构造器
        Constructor constructor1 = c.getConstructor(String.class, int.class);
        System.out.println(constructor1.getName() + "--->" +
                constructor1.getParameterCount());  // login.Cat--->2

    }
}

获取类的构造器,有什么用吗?

获取类的构造器的作用,依然是初始化一个对象返回(这种初始化,可以实现暴力破解构造器中 private 的限制)

// Cat 类 (前置资源)

class Cat {
    private String name;
    private int age;
	
    // 重写了 toString 方法!
    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Cat() {
    }

    public Cat(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
import java.lang.reflect.Constructor;

public class Test {
    public static void main(String[] args) throws Exception {
        // 1. 反射第一步:必须先得到这个类的 Class 对象
        Class c = Cat.class;

        // 2. 获取某个构造器:无参构造器
        Constructor constructor = c.getConstructor();
        System.out.println(constructor.getName() + "--->" +
                constructor.getParameterCount());  // login.Cat--->0

        // ---访问无参构造器的成员变量
        constructor.setAccessible(true);  // 当输入了这一句代码,意味着
        // 开启了"禁止检查访问权限"功能,即使构造器是私有的,也能实现访问成员变量,这个是暴力反射!
        Cat cat = (Cat) constructor.newInstance();
        System.out.println(cat);  // Cat{name='null', age=0}


        // 3. 获取有参构造器
        Constructor constructor1 = c.getConstructor(String.class, int.class);
        System.out.println(constructor1.getName() + "--->" +
                constructor1.getParameterCount());  // login.Cat--->2

        // ---访问有参构造器的成员变量
        Cat cat1 = (Cat) constructor1.newInstance("叮当猫", 3);
        System.out.println(cat1);  // Cat{name='null', age=0}
    }
}
获取类的成员变量
// Cat 类 (前置资源)

public class Cat {
    public static final String COUNTRY = "中国";
    public static int a;
    private String name;
    private int age;
    
    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Cat() {
    }

    public Cat(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
import java.lang.reflect.Field;

public class Test {
    public static void main(String[] args) throws Exception {
        // 1. 反射第一步:必须是先得到类的 Class 对象
        Class c = Cat.class;

        // 2. 获取类的全部成员变量
        Field[] fields = c.getDeclaredFields();

        // 3. 遍历这个成员变量数组
        for (Field field : fields) {
            System.out.println(field.getName() + "--->" + field.getType());
        }
        System.out.println("----------------------------");

        // 4. 定位到某个成员变量
        Field fName = c.getDeclaredField("name");
        System.out.println(fName.getName() + "--->" + fName.getType());

        Field fAge = c.getDeclaredField("age");
        System.out.println(fAge.getName() + "--->" + fAge.getType());

        // 运行结果:
        /*
            COUNTRY--->class java.lang.String
            a--->int
            name--->class java.lang.String
            age--->int
            ----------------------------
            name--->class java.lang.String
            age--->int
        */
    }
}

获取成员变量的作用:依然是赋值、取值

import java.lang.reflect.Field;

public class Test {
    public static void main(String[] args) throws Exception {
        // 得到类的 Class 对象
        Class c = Cat.class;

        // 定位到某个成员变量
        Field fName = c.getDeclaredField("name");
        Field fAge = c.getDeclaredField("age");

        // 进行赋值
        Cat cat = new Cat();
        fName.setAccessible(true);  // 禁止访问控制权限
        fName.set(cat, "咖啡猫");
        System.out.println(cat);  // Cat{name='咖啡猫', age=0}

        // 进行取值
        String name = (String) fName.get(cat);
        System.out.println(name);  // 咖啡猫
    }
}
获取类的成员方法
import java.lang.reflect.Method;

public class Test {
    public static void main(String[] args) throws Exception {
        // 1. 得到类的 Class 对象
        Class c = Cat.class;

        // 2. 获取类的全部成员方法
        Method[] methods = c.getDeclaredMethods();

        // 3. 遍历数组中的每个方法对象
        for (Method method : methods) {
            System.out.println(method.getName() + "--->"
                    + method.getParameterCount() + "--->"
                    + method.getReturnType());
        }
        System.out.println("-----------------------");

        // 4. 获取某个方法对象
        Method run = c.getDeclaredMethod("run");  // 拿run方法,无参数的
        System.out.println(run.getName() + "--->"
                + run.getParameterCount() + "--->"
                + run.getReturnType());
        System.out.println("-----------------------");

        Method eat = c.getDeclaredMethod("eat", String.class);  // 拿eat方法,含参数的
        System.out.println(eat.getName() + "--->"
                + eat.getParameterCount() + "--->"
                + eat.getReturnType());

        // 5. 获取成员方法的作用:依然是执行
        Cat cat = new Cat();  // 先创造一个成员出来,才能执行成员方法

        run.setAccessible(true);  // 禁止检查访问权限 (暴力解除了 private 的限制)
        Object res1 = run.invoke(cat);
        System.out.println(res1);

        eat.setAccessible(true);  // 禁止检查访问权限 (暴力解除了 private 的限制)
        Object res2 = eat.invoke(cat, "鱼");
        System.out.println(res2);

        // 运行结果
        /*
            eat--->1--->class java.lang.String
            getAge--->0--->int
            setAge--->1--->void
            getName--->0--->class java.lang.String
            run--->0--->void
            toString--->0--->class java.lang.String
            setName--->1--->void
            -----------------------
            run--->0--->void
            -----------------------
            eat--->1--->class java.lang.String
            猫跑得快
            null
            猫最爱吃:鱼
         */
    }
}
应用场景
  • 基本作用:可以得到一个类的全部成分然后操作
  • 可以破坏封装性
  • 最重要的用途是:适合做 Java 的框架,基本上,主流的框架都会基于反射设计出一些通用的功能

案例:要求对于任意一个对象,该框架都可以把对象的字段名和对应的值,保存到文件中去

// 运行程序部分

public class Test {
    public static void main(String[] args) throws Exception {
        Student s1 = new Student("Jack", 29, '男', 168, "唱歌");
        Teacher t1 = new Teacher("Tony", 9000);
        // 需求:要求对于任意一个对象,该框架都可以把对象的字段名和对应的值,保存到文件中去
        String PATH = "E:/Desktop/temp.txt";
        System.out.println(ObjectFrame.savaObject(s1, PATH));
        System.out.println(ObjectFrame.savaObject(t1, PATH));
    }
}

class Student {
    private String name;
    private int age;
    private char sex;
    private double height;
    private String hobby;

    public Student(String name, int age, char sex, double height, String hobby) {
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.height = height;
        this.hobby = hobby;
    }
}

class Teacher {
    private String name;
    private double salary;

    public Teacher(String name, double salary) {
        this.name = name;
        this.salary = salary;
    }
}
// 框架部分

import java.io.FileOutputStream;
import java.io.PrintStream;
import java.lang.reflect.Field;

public class ObjectFrame {
    // 目的:可以保存任何对象的字段和其数据到文件中去
    public static boolean savaObject(Object obj, String path) throws Exception {
        // 创建打印输出流,待会保存数据到文件要用
        PrintStream ps = new PrintStream(new FileOutputStream(path, true));  // true 代表开启追加模式

        // obj 是任意对象,不清楚到达有多少个字段要保存
        Class c = obj.getClass();  // 通过对象拿到它的"类对象"
        String cName = c.getSimpleName();  // 通过"类对象"获取类的简单名
        ps.println("----------" + cName + "----------");

        // 从这个类中提取它的全部成员变量
        Field[] fields = c.getDeclaredFields();

        // 遍历,得到并操作每个成员对象
        for (Field field : fields) {
            String name = field.getName();  // 拿到该成员变量的名字
            field.setAccessible(true);  // 禁止检查访问权限 (通过暴力手段解除了 private 的限制)
            String value = field.get(obj) + "";  // 拿到对象在"该成员变量"中存的值
            ps.println(name + "=" + value);  // 将数据输出到文件中
        }
        ps.close();
        return true;
    }
}
// 路径"E:/Desktop/temp.txt"的文件内容

----------Student----------
name=Jack
age=29
sex=男
height=168.0
hobby=唱歌
----------Teacher----------
name=Tony
salary=9000.0

vue + video.js 加载多种视频流(HLS、FLV、RTMP、RTSP) 由于需要在一个项目内接入多种常用的视频流,所以接触到video.js,这里就做个记录。vue安装就不讲了,直接从项目开始了。RTSP格式已测试,无法成功播放,浏览器就识别不了STSP协议(提供两个解决方案:第一个是通过后端去转格式。第二个方案就是安装插件/中间件。目前想用浏览器直接播放RTSP格式流,没有其他更好的解决方法。 阅读详情

相关推荐

3D点云目标检测Complex-YOLO(训练篇)(一)———KITTI数据集预处理与制作

KITTI dataset Download dataset KITTI 3D Object Detection Evaluation 2017 link 下载四个部分,共41.4GB 解压后为四部分内容(相机校准矩阵calib、RGB图像image_2、标签label_2、点云数据velodyne) 对应的testing和training数据。其中,training数据为7481张(图片和点云对应的场景),testing数据 7518张(无label_2数据)。 Data Preprocess

“知识最大的敌人不是无知,而是错觉” 7150

【黑马java基础】单元测试、反射、注解

先来认识一下什么是注解?Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。比如:Junit框架的@Test注解可以用在方法上,用来标记这个方法是测试方法,被@Test标记的方法能够被Junit框架执行。再比如:@Override注解可以用在方法上,用来标记这个方法是重写方法,被@Override注解标记的方法能够被IDEA识别进行语法检查。注解不光可以用在方法上,还可以用在类上、变量上、构造器上等位置。

YOLO的博客 982

数十个锂电池充放电电路,锂电池充放电芯片

关乎锂电池供电的产品,在锂电池上,需要三个电路系统:1,锂电池保护电路,2,锂电池充电电路,3,锂电池输出电路。 内容目录: 单节的锂电池保护电路单节为3.7V锂电池(也叫4.2V)和3.8V锂电池(也叫4.35V) 单节的锂电池充电电路即锂电池保护板 单节的锂电池输出电路锂电池转换稳压输出为:1.2V,3.3V,5V,12V等等 两节的锂电池保护电路两节串联7.4V锂电池(也叫8.4V) 两节的锂电池充电电路即两节锂电池保护板 两节...

kuakewei123的博客 1万+

Java 反射机制与框架的那点事

Java 反射机制是 Java 语言提供的一种能力,允许程序在运行时查询、访问和修改它自己的结构和行为。反射机制非常有用,但同时也需要谨慎使用,因为它可能会带来性能开销和安全风险。

modelsetget的博客 572

解决AutoDock与Python版本冲突导致的内存泄漏问题:从BHtree *错误到环境配置优化

本文深入解析了AutoDock分子对接中常见的‘BHtree *’内存泄漏错误,其根源在于SWIG接口模块与Python运行环境的版本不匹配。文章提供了根治方案:通过构建Python 2.5.4与MGLTools 1.5.6的黄金兼容组合,并详细指导环境清理、安装配置及实战测试,从而彻底解决该内存泄漏问题,确保AutoDock工作流的稳定运行。

g5h6i的博客 1113

Linux系统下奥比中光Astra Pro相机SDK部署与避坑指南

本文详细指导了在Linux系统下部署奥比中光Astra Pro深度相机SDK的全过程,涵盖系统准备、SDK安装、设备权限配置及常见问题排查。重点解析了USB设备规则配置这一关键步骤,并提供了Python与C++项目的集成方法,旨在帮助开发者快速完成相机配置,避免常见陷阱。

weixin_28455801的博客 299

Java 反射机制与Spring框架的那点事

框架开发:许多框架如 Spring 使用反射来实现依赖注入、AOP(面向切面编程)等核心功能。动态代理:通过反射可以创建动态代理,用于实现方法拦截、日志记录、事务管理等功能。单元测试:在进行单元测试时,反射可以用来访问和修改私有成员,以便测试通常无法直接访问的内部逻辑。插件系统:应用程序可以利用反射动态加载和使用插件,从而扩展应用程序的功能。配置文件解析:反射可以用于将配置文件中的设置映射到程序中的类和对象上。对象序列化和反序列化。

威哥爱编程,华为 HDE,鸿蒙极客、优快云博客专家、《鸿蒙 HarmonyOS 5/6 开发之路》系列图书第一作者 602

告别零碎资料!手把手教你搞定ASTER L1T数据的预处理全流程(附ENVI实操)

本文详细介绍了ASTER L1T数据的预处理全流程,包括数据获取、质量检查、ENVI实操步骤(辐射定标、大气校正、几何精校正)以及热红外波段深度处理。特别适合地信领域初学者和研究人员,帮助快速掌握ASTER L1T数据处理技巧,提升定量反演研究效率。

weixin_30385925的博客 354

Java反射机制

Java反射(Reflection)是一种在运行时检查或修改程序行为的能力。它允许程序在运行时动态地获取类的信息,包括类的结构、构造函数、方法、字段等,并且可以动态地创建对象、调用方法和访问字段。反射是Java语言的一个重要特性,广泛应用于框架设计、动态代理、单元测试等领域。

后端小知识呀 448

阿里云Windows服务器部署网站全流程:从IIS配置到安全上线

Web服务器是承载网站应用、处理HTTP请求的核心软件。其工作原理是监听特定网络端口,接收客户端请求,并返回相应的网页、文件或动态生成的内容。在Windows Server环境中,IIS(Internet Information Services)作为微软官方Web服务器,凭借其与操作系统深度集成、图形化管理界面和对ASP.NET等微软技术栈的良好支持,成为许多开发者和运维人员的首选。其技术价值在于提供了稳定、可扩展的托管平台,支持从简单的静态网站到复杂的企业级Web应用。在云服务器普及的今天,将IIS部署

weixin_33552698的博客 327

备战2025数学建模国赛(算法29):博弈论在数学建模竞赛中的应用

博弈论为数学建模竞赛提供了强大的分析工具,尤其适用于涉及多方互动决策的问题。本文介绍了博弈论的核心模型、算法实现及竞赛应用案例,并提供了完整的Python代码实现。扩展阅读方向不完全信息博弈与贝叶斯均衡合作博弈与联盟形成机制设计与拍卖理论随机博弈与马尔可夫决策过程博弈论与机器学习的结合。

YOLO 442

一文看懂Java反射、注解、UML图和Lambda表达式

/静态导入 import static java . lang . annotation . ElementType . *;/*** 表示该注解可以在什么地方使用* 此处只可以在类的前面和方法的前面使用该注解//静态导入 import static java . lang . annotation . ElementType . *;/*** 表示该注解可以在什么地方使用* 此处只可以在类的前面和方法的前面使用该注解Target;//静态导入。

HTDiiii的博客 1228

(11-3-01 )

以太坊(Ethereum)是一种基于区块链技术的开源平台和加密货币。它于2015年由Vitalik Buterin和Gavin Wood等开发者创建,并成为比特币之后最受欢迎的加密货币之一。以太坊不仅支持加密货币交易,还为开发者和企业提供了构建去中心化应用程序的强大工具。在本节的内容中,将实型一个完整的机器学习模型项目,智能检测出以太坊区块链中的非法账户。从问题定义到模型建立和评估,再到最终的总结和建议。本实例突出了处理类别不平衡问题的重要性,并展示了如何使用多种机器学习算法来解决实际问题。此外,通过数据可

码农三叔 2170

超详细 springboot 整合 Mock 进行单元测试!本文带你搞清楚!

什么是Mock 1、Mock定义 Mockito是Java单元测试开发框架。在写测试单元时它可以Mock(Mock的中文释义是模拟,所以Mockito从名字上可以看出是要模拟一种场景)。

伤心的辣条 2917

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

科普文:微服务之Spring中的反射解读

框架开发:许多框架如 Spring 使用反射来实现依赖注入、AOP(面向切面编程)等核心功能。动态代理:通过反射可以创建动态代理,用于实现方法拦截、日志记录、事务管理等功能。单元测试:在进行单元测试时,反射可以用来访问和修改私有成员,以便测试通常无法直接访问的内部逻辑。插件系统:应用程序可以利用反射动态加载和使用插件,从而扩展应用程序的功能。配置文件解析:反射可以用于将配置文件中的设置映射到程序中的类和对象上。对象序列化和反序列化。

为无为,事无事,味无味。 1096

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

java学习06(Junit、枚举、反射、Lambda)

java学习06

weixin_73416102的博客 1034

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java的反射机制以及它在实际开发中的应用。

Java的反射机制是一个强大的功能,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这种能力使得Java程序可以在编译之后决定类的行为,这对于很多高级框架和工具来说是非常有用的特性。

qq_33240556的博客 363

java-高级技术(单元测试、反射)

对最小功能单元——方法编写代码,进行测试。

m0_74478829的博客 532

Android 单元测试中遇到的一些问题汇总

Android 单元测试过程中的一些问题汇总

是非的Android学习之路 2826

Java高级技术

格式public @interface 注解名称{public 属性类型 属性名() [default 默认属性值];特殊属性名:value如果注解中只有一个value属性,使用注解时,value名称可以不写!!

GLATY的博客 710

通过反射和自定义注解模仿Junit测试框架

当添加了@MyTest注解,方法就执行,如果没添加@MyTest注解就不执行,模仿了Junit框架技术。

HaiMeng一起奋斗 138

Java入门06 - 反射和注解

文章目录1. 反射1.1 反射的功能1.2 反射的应用1.3 如何使用反射?1)获取Class实例的3种方法2)获取类的成员(成员变量、成员方法成员方法)3)调用成员方法4)获取和设置对象的属性值5)通过Constructor实例创建对象 ☆2. 注解2.1 注解的用途2.2 内置的注解 @override2.3 自定义注解2.4 元注解5. 参考资料 1. 反射 反射是强大的,但应尽量避免使用反射 反射增加了JVM的系统开销,性能上比不使用反射慢 反射可能违反某些安全策略 反射允许访问私有成员,打破了

libh的博客 221

java——反射与注解

引用数据类型:类 数组 接口 枚举 注解jdk1.5版本的新特性->一个引用数据类型和类,接口,枚举是同一个层次的作用:说明:对代码进行说明,生成doc文档(API文档)检查:检查文档是否符合条件 @Override(会用) @FunctionalInterface分析:对代码进行分析,起到了代替配置文件的作用(会用)JDK中的注解:@Override->检测此方法是否为重写方法jdk1.5版本,支持父类的方法重写jdk1.6版本,支持接口的方法重写。

m0_70718945的博客 1151

Java中的反射机制详解

首先定义一个接口,代理类和目标类都将实现这个接口。

weixin_59335007的博客 1873

javaweb\第1节 基础加强\第2节 反射\第3节 注解

这里写自定义目录标题P457 01_今日内容P458 02_Junit_测试概述P459 03_Junit_使用步骤 P457 01_今日内容 P458 02_Junit_测试概述 白盒测试,写代码。 黑盒测试,不用。 Junit是白盒测试其中的一种。 P459 03_Junit_使用步骤 # 今日内容 1. Junit单元测试 2. 反射 3. 注解 ## Junit单元测试: * 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。 2. 白盒测试:需要写

qq_42788016的博客 199

Java 入门指南:反射机制

反射机制是指在运行时动态地获取类的信息并操作类和对象的方法和属性。它是一种 Java 语言的特性,可以让程序在运行时获取类的信息,包括类型、属性、方法等,并且可以在运行时动态地创建对象、调用对象的方法、修改属性等。

热带鱼的技术博客 1333
上一篇: CSS-1
下一篇: 07_注解与动态代理
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值