Java注解与反射系列——注解与反射实例day2-2

news/2024/5/19 6:40:05 标签: java, 开发语言, 注解, 反射

Java注解反射系列——注解反射实例

  • 实例

实例

用于获取所有带有注解的方法的方法名并记录日到txt中

CheckMethod注解

java">package example.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CheckMethod {
    String value()default "";
}

Stu类

类中有三个自定义的方法:runAway,eat,cry,其中前两个家里CheckMethod注解

java">package example.reflect.entity;

import example.annotation.AnnoField;
import example.annotation.CheckMethod;
import example.annotation.MyAnno;

@MyAnno(value = "stu_class")
public class Stu {
    @AnnoField(col = "NAME",type = "String")
    private String name;
    @AnnoField(col = "AGE",type = "Number")
    private int age;
    private String id;

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

    public Stu() {
    }

    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;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @CheckMethod()
    public void runAway(){
        System.out.println("run away ...");
    }

    
    @CheckMethod()
    public void eat(String food){
        System.out.println("eat some "+ food);
    }

    public void cry(){
        System.out.println("cry loud ...");
    }

    @Override
    public String toString() {
        return "Stu{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", id='" + id + '\'' +
                '}';
    }
}

测试

java">package example.reflect;

import example.annotation.CheckMethod;
import example.reflect.entity.Stu;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Method;

/**
 * 判断注解测试框架,记录到文件txt中
 */
public class DoDemo {
    public static void main(String[] args) throws IOException {
        //记录第几个方法
        int line = 0;
        //文件
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("D:\\haveAnno.txt"));
        //通过反射获取类
        Class<Stu> stuClass = Stu.class;
        //获取所有的方法
        Method[] methods = stuClass.getMethods();
        for (Method method : methods) {

            line++;
            //判断是否有CheckMethod注解,有则打印名字
            if (method.isAnnotationPresent(CheckMethod.class)) {
                System.out.println(method.getName());
                //记录到文件
                bufferedWriter.write("have Anno: Num :" + line + "CheckMethod!: " + method.getName());
                bufferedWriter.newLine();
            }
        }
        bufferedWriter.flush();
        bufferedWriter.close();
    }
}

在这里插入图片描述

在这里插入图片描述


http://www.niftyadmin.cn/n/1717344.html

相关文章

linux服务器管理——高可用电商项目系统部署方案

linux服务器管理——高可用电商项目系统部署方案高可用电商项目系统部署方案报告前言[摘 要][关键词]环境拓扑图完整拓扑图准备工作必要安装和操作克隆搭建LVS的DR模式简单拓扑配置IProuter查看网卡的uuid以及mac地址配置静态IP测试连通router启动路由转发查看路由表lvs1lvs2RS…

Java接口详解

Java接口什么是Java接口接口特性接口与类的区别接口特性抽象类和接口的区别如何定义接口接口的进化jdk7jdk8jdk9接口实现接口示例抽象方法1.创建接口2.书写要实现的方法3.构建实现类4.实现类5.实现方法静态常量默认方法覆盖实现静态方法私有方法普通私有方法静态私有方法接口的…

Java8时间与日期API(别再使用Date和Calendar了)

Java8时间与日期APIAPI设计原因时间日期常用类概述创建方法&#xff08;now&#xff09;生成自定义的日期时间对象&#xff08;of&#xff09;为LocalDateTime添加时区信息ZoneId类获取系统时区获取其他时区的时间关于Month枚举根据现有时间进行时间推断&#xff08;plus&#…

SpringSecurity系列——概述day1-1

SpringSecurity系列——概述简介什么是授权什么是认证quickstart1.创建项目选择依赖SpringSecurity依赖2.Controller测试3.访问localhost8080/demo用户名和密码4.登录5.退出登录简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安…

SpringSecurity系列——JWT(jjwt)day1-2

SpringSecurity系列——JWTday1-2简介官网地址Session对比JWTsession问题JWTJWT的优点JWT的结构HeaderPayloadSignatureJJWT地址JJWT基础使用和介绍导入依赖quickstart代码解释设置使用加密算法构建jwt设置payload中包含的用户信息设置加密算法压缩生成token令牌错误一&#xf…

SpringSecurity系列——简单自定义登录流程day1-3

SpringSecurity系列——简单自定义登录流程SpringSecurity认证前后端分离的登录校验流程前后端分离请求响应流程SpringSecurity完整流程如何查看过滤器1.启动类中添加逻辑进行debug2.打开评估输入表达式修改流程登录校验自定义登录流程1.导入依赖2.编写yaml3.编写entity&#x…

SpringSecurity系列——简单自定义登录流程问题解析day1-4

简单自定义登录流程问题解析对day1-3中简单自定义登录流程梳理问题为什么需要在密码前加{noop}&#xff08;密码加密存储&#xff09;密码加密简介散列加密概述散列加密原理Spring Security中的密码处理方案如何使用BCryptPasswordEncoder&#xff1f;简单使用具体如何使用&…

SpringSecurity系列——基于SpringBoot2.7的登录接口(内有惊喜)day2-1

SpringSecurity系列——基于SpringBoot2.7的登录接口完整登录本文所用JWTUtil地址环境准备工作目录数据库pom.xml实体类UserUserMapperLoginServiceResultUtil统一封装返回LoginParam前端表单接收JWTUtilLoginControllerSpringSecurity配置SpringSecurityConfigUserDetailsServ…