浅谈java运用注解实现对类中的方法检测的工具

创建自定义注解

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Test {

}

建立测试类

public class UserTest {

	@Test
	public void testInsert() {
		User user = null;
		System.out.println(user.getUsername());
	}

	@Test
	public void testQuery() {
		Blog b = new Blog();
		b.setTips(new String[] {"技术","java","多线程"});
		String[] tips = b.getTips();
		System.out.println(tips[3]);
	}

	@Test
	public void divide() {
		System.out.println(10/0);
	}

}

编写工具类

public static void main(String[] args) {
		BufferedWriter bw = null;
		try {
			//记录方法总数
			int methodCount = 0;
			//记录错误方法总数
			int expCount = 0;
			//准备一个文件输出流,用于记录程序执行过程中的异常信息
			bw = new BufferedWriter(new FileWriter("log.txt"));
			// 获取类的Class对象
			Class clz = UserTest.class;
			//创建目标类型的实例对象
			Object obj = clz.newInstance();
			//获取所有的方法对象
			Method[] methods = clz.getMethods();
			for (Method m : methods) {
				if(m.isAnnotationPresent(Test.class)) {
					//统计总共有多少方法需要被测试
					methodCount++;
				}
			}
			bw.write("测试方法总数:" + methodCount);
			bw.newLine();
			bw.write("================================");
			bw.newLine();
			for (Method m : methods) {
				try {
					//如果方法上面包含了Test注解则作为测试方法进行测试
					if(m.isAnnotationPresent(Test.class)) {
						m.invoke(obj);
					}
				} catch (Exception e) {
					//异常方法计数器递增
					expCount++;
					bw.write(m.getName() + "出现异常");
					bw.newLine();
					bw.write("类型:" + e.getCause().getClass());
					bw.newLine();
					bw.write("原因:" + e.getCause().getMessage());
					bw.newLine();
					bw.write("================================");
					bw.newLine();
				}
			}
			bw.write("错误方法总数:" + expCount);
			bw.newLine();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				if(bw != null) {
					bw.flush();
					bw.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

到此这篇关于浅谈java运用注解实现对类中的方法检测的工具的文章就介绍到这了,更多相关java运用注解实现对类中的方法检测的工具内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java扩展Hibernate注解支持java8新时间类型

    扩展Hibernate注解@CreationTimestamp,@UpdateTimestamp支持Java8新的时间类型Hibernate version: 4.3.5.Final 复制代码 代码如下: package com.hibernate.annotation; import org.hibernate.HibernateException;import org.hibernate.tuple.AnnotationValueGeneration;import org.hibernate

  • 创建自定义的Java注解类的方法

    如果你已经在使用Java编程,并且也使用了任何像Spring和Hibernate这样的流行框架,那么你应该对注解的使用非常地熟悉.使用一个现有框架工作的时候,通常使用它的注解就够了.但是,你是不是也有时候有要创建属于你自己的注解的需求呢? 不久之前,我找到了一个自己创建一个注解的理由,那是一个涉及验证存储在多种数据库中的常用数据的项目. 场景描述 该业务有多种数据库都存储着相同的数据,它们有各自不同的保持数据更新的方法. 该业务曾计划把所有这些数据都整合到一个主数据库中,以减轻涉及到多种数据源所

  • Java中自定义注解类及使用实例解析

    这篇文章主要介绍了Java中自定义注解类并使用过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在Java框架中,经常会使用注解,而且还可以省很多事,来了解下自定义注解. 注解是一种能被添加到java代码中的元数据,类.方法.变量.参数和包都可以用注解来修饰.注解对于它所修饰的代码并没有直接的影响 先写一个自己的注解类 @Documented //会被javadoc命令识别 @Retention(RetentionPolicy.RUNTI

  • 使用java的注解(用在java类的方法上的注解)方法

    场景:根据方法上的注解,通过java反射方式找到需要执行的的方法. 1.注解类 /**注解作用在方法上*/ @Target({ElementType.METHOD}) /**注解的生命周期一直程序运行时都存在VM运行期间保留注解,可以通过反射机制读取注解信息*/ @Retention(RetentionPolicy.RUNTIME) /**注解包含在Javadoc中*/ @Documented public @interface Item { String value(); } 2.在类的方法上

  • Java利用反射如何查找使用指定注解的类详解

    前言 最近有些空,想自己写个跟spring里的注解一样的注解来用,然后希望能找到使用了自己写了注解的类,下面来介绍一下实现方法 声明,下面代码是没看过spring源码写的,基本上都是网上找的博客,整理的 定义注解 Controller.java @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Controller { } RequestMapping.jav

  • Java8中的类型注解浅析

    注解大家都知道,从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置.那充满争议的类型注解究竟是什么?复杂还是便捷? 一.什么是类型注解 在java 8之前,注解只能是在声明的地方所使用,比如类,方法,属性:java 8里面,注解可以应用在任何地方,比如: 创建类实例 复制代码 代码如下: new @Interned MyObject(); 类型映射 复制代码 代码如下: myString = (@NonNull String) str; i

  • java获取包下被指定注解的类过程解析

    方案一: 采用reflections 框架(此框架依赖com.google.guava) 1.reflections框架地址:https://github.com/ronmamo/reflections 2.项目依赖 <dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>0.9.11</versi

  • 深入理解Java注解类型(@Annotation)

    Java注解是在JDK5时引入的新特性,鉴于目前大部分框架(如spring)都使用了注解简化代码并提高编码的效率,因此掌握并深入理解注解对于一个Java工程师是来说是很有必要的事.本篇我们将通过以下几个角度来分析注解的相关知识点 理解Java注解 实际上Java注解与普通修饰符(public.static.void等)的使用方式并没有多大区别,下面的例子是常见的注解: public class AnnotationDemo { //@Test注解修饰方法A @Test public static

  • Java8新特性之类型注解_动力节点Java学院整理

    注解从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置.那充满争议的类型注解究竟是什么?复杂还是便捷? 什么是类型注解 在java 8之前,注解只能是在声明的地方所使用,比如类,方法,属性:java 8里面,注解可以应用在任何地方,比如: 创建类实例 new @Interned MyObject(); 类型映射 myString = (@NonNull String) str; implements 语句中 class Unmodif

随机推荐