首页 > 编程语言 >java自定义注解

java自定义注解

时间:2022-12-30 17:15:25浏览次数:40  
标签:lang java 自定义 value public import 注解 annotation

自定义注解

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

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ToLowerCase {
    boolean ignoreCase() default false;
}

调用

package zj;


import org.aspectj.lang.Aspects;

import java.lang.reflect.Field;

public class MyClass {
    @ToLowerCase(ignoreCase=true)
    public String field1;

    @ToLowerCase(ignoreCase=false)
    public String field2;

    public void convertToLowerCase() {
        for (Field field : this.getClass().getDeclaredFields()) {
            ToLowerCase annotation = field.getAnnotation(ToLowerCase.class);
            if (annotation != null) {
                try {
                    field.setAccessible(true);
                    String value = (String) field.get(this);
                    if (value != null) {
                        if (annotation.ignoreCase()) {
                            value = value.toLowerCase();
                        }
//                        else {
//                            value = value.toLowerCase(Locale.ENGLISH);
//                        }
                        field.set(this, value);
                    }
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void main(String[] args) {
        MyClass obj = new MyClass();
        obj.field1 = "HELLO";
        obj.field2 = "WORLD";
        obj.convertToLowerCase();

        System.out.println(obj.field1 + obj.field2);
    }

}

 

标签:lang,java,自定义,value,public,import,注解,annotation
From: https://www.cnblogs.com/chengxin1982/p/17015306.html

相关文章

  • SpringBoot - @RequestMapping 注解
    @Target({ElementType.TYPE,ElementType.METHOD})//只能在方法上使用@Retention(RetentionPolicy.RUNTIME)@Documented@Mappingpublic@interfaceRequestMapping{......
  • 【校招VIP】“推推”Java项目课程:接口设计——详情数据和快速验证
    今天继续看一下商业实战项目【推推】小说详情模块的第三期。上节课做了文档设计,这节课做一下接口设计。在前后端分离的项目里,接口设计非常重要。在正常的实习或者开发工作......
  • Java集合快速失败和安全失败机制
    快速失败机制是Java集合的一种错误检测机制,当遍历集合时,集合的结构进行了修改,可能会触发"fail-fast"机制Java.util包中所有集合都被设计为快速失败机制示例代码public......
  • 全文检索工具elasticsearch:第三章: Java程序中的应用
    搭建模块创建二个项目gmall-list-service的appliction.properties:server.port=8073spring.datasource.url=jdbc:mysql://localhost:3306/gmall?characterEncoding=......
  • 【转】自定义注解详细介绍
    原文:https://blog.csdn.net/xsp_happyboy/article/details/809874841注解的概念1.1注解的官方定义首先看看官方对注解的描述:Anannotationisaformofmetadata,......
  • 使用Java NIO提高服务端程序的性能
      JavaNIO增加了新的SocketChannel、ServerSocketChannel等类来提供对构建高性能的服务端程序的支持。SocketChannel、ServerSocketChannel能够在非阻塞的模式下工作,它......
  • JavaScript 批量大文件上传下载
    ​ 4GB以上超大文件上传和断点续传服务器的实现随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求。但是在......
  • java 多线程并行执行任务 demo
    packagecom.sleep.demo;importorg.apache.commons.lang3.StringUtils;importjava.util.*;importjava.util.concurrent.*;importjava.util.concurrent.atomic.A......
  • 关于RxJava2.0你不知道的事
    前言如果你对RxJava1.x还不是了解,可以参考下面文章。​​1.RxJava使用介绍​​【视频教程】2.RxJava操作符  ​​•CreatingObservables(Observable的创建操作符)......
  • RxJava 合并组合两个(或多个)Observable数据源
    关键词:合并ObservableRxJava系列教程:​​1.RxJava使用介绍​​​​【视频教程】​​​​2.RxJava操作符  ​​•CreatingObservables(Observable的创建操作符)​......