`

java 枚举使用举例

    博客分类:
  • Code
阅读更多
关于枚举的用法, 备忘一下.

public enum MonitorKey {
    query(A.class, "query"),
    update(A.class, "update"),
    ...
;

    Class<?> targetClazz;
    String targetMehtodName;

    MonitorKey() {
    }

    MonitorKey(Class<?> clazz, String methodName) {
        this.targetClazz = clazz;
        this.targetMehtodName = methodName;
    }

    /**
     *忽略不需要埋点的调用
     *
     * @param invocation
     * @return
     */
    public boolean ignored(MethodInvocation invocation) {
        Method method = invocation.getMethod();
        String className = method.getDeclaringClass().getName();
        return !className.equals(targetClazz.getName()) || !method.getName().equals(targetMehtodName);
    }

}


在MonitorUtils中:
public static void addSuccess(MethodInvocation invocation, MonitorKey key, long duration) {
        if (key.ignored(invocation)) {
            return;
        }

        ...
    }
public static void addFailure(MethodInvocation invocation, MonitorKey key, long duration) {
        if (key.ignored(invocation)) {
            return;
        }

        ...
    }


在使用到MonitorUtils的MonitorInterceptor
    public void doSuccess(MethodInvocation invocation, long duration) {
        MonitorUtils.addSuccess(invocation, MonitorKey.update, duration);

    }

    public void doFailure(MethodInvocation invocation, long duration, Throwable e) {
        MonitorUtils.addFailure(invocation, MonitorKey.update, duration);
    }


这里使用枚举不是为了简单的定义一个常量, 而是将原来包含在Interceptor中的判断逻辑(在doSuccess, doFailure中均要使用相同的判断逻辑)放到枚举类型MonitorKey中, 可以将这里的枚举理解为状态模式的一种应用
分享到:
评论

相关推荐

    java常用API举例

    Java API,全称为Java应用程序接口,...以上仅是Java API的冰山一角,Java API还包括许多其他重要概念,如枚举、注解、并发工具类、正则表达式等。通过深入学习和实践,可以掌握更多Java API的使用技巧,提升编程能力。

    浅谈Java枚举的作用与好处

    Java枚举(Enum)在编程中扮演着重要的角色,它是一种特殊的类,允许开发者定义一组预定义的常量。在Java中,枚举是通过关键字`enum`来创建的,它提供了一种更加安全和优雅的方式来处理有限的、固定的选项集合。本文...

    枚举和泛型的应用举例

    枚举(Enum)和泛型(Generic)是Java编程语言中的两种强大特性,它们极大地提升了代码的可读性、安全性和复用性。本篇文章将深入探讨这两种概念及其在实际应用中的示例。 首先,我们来看枚举。枚举是一种预定义的...

    Java中的内部类应用举例

    ### Java中的内部类应用举例 #### 一、Java内部类概览 在Java编程语言中,内部类(Inner Classes)是一种独特的概念,它允许开发者在类的内部定义另一个类。这种设计模式增强了代码的封装性和模块化,同时也提供了...

    枚举 实现星期的转化

    枚举(Enum)是Java语言中一种特殊的类,用于表示一组固定的常量值。枚举类型可以包含方法、构造函数、变量等,使得它可以像普通类一样拥有丰富的功能。在本示例中,我们将通过枚举实现星期的转换功能。 #### 枚举...

    JAVA c++比较 对比讲解二者不同 代码举例(英文版)

    - **包**:JAVA使用包(package)的概念来组织类,可以定义多层目录结构来管理类库。 #### 五、标准库与API - **C++**:提供了丰富的标准库,如STL(Standard Template Library),支持泛型编程,包括容器(container)...

    Java语言程序设计(完整版)第六版 教程示例源码

    5. **IO流**:学习如何使用Java的输入输出系统,包括文件读写、对象序列化、字节流和字符流的操作,以及NIO(New IO)框架。 6. **多线程**:Java提供了内置的多线程支持。示例源码会展示如何创建和管理线程,同步...

    Java简明教程-第3版-课件和程序举例源码

    此外,本教程可能还会介绍一些高级主题,如反射、枚举、注解、泛型、Lambda表达式、JavaFX(用于创建桌面应用程序)以及Java EE(企业级应用开发)的基础知识。 总之,“Java简明教程-第3版”的课件和源码是一个...

    【后端】java基础(5.6)java高级基础之枚举

    java中除了类和接口,还有一个类型叫做枚举(enum),它出现得比较晚,在JDk1.5之后才出,因此对我们来说并不常用,但是它的作用还是不小。 创建的时候前面和创建类、接口一样,在new之后,我们选择enum即可。表面上...

    疯狂JAVA讲义

    学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢? 13 1.5.3 运行Java程序 14 1.5.4 根据...

    java就业面试核心知识集合

    - `String`类型虽然可以通过转换为枚举类型间接使用`switch`,但默认情况下不支持直接使用。 6. **类型转换与运算** - **知识点**: - `short s1 = 1; s1 = s1 + 1;`会报错,因为类型自动提升。 - `short s1 = ...

    尚硅谷_宋红康_第10章_枚举类与注解.pdf

    ·课程共30天,715个知识视频小节,涉及主流Java使用的方方面面,全而不冗余 ·全程内容涵盖数据结构、设计模式、JVM内存结构等深度技术 ·企业级笔试面试题目深入源码级讲解,拒绝死记硬背 4.代码量更大、案例更...

    90个高质量的java问答.pdf

    - **实际应用场景**:举例说明不同访问级别的使用场景,比如在包内共享资源或隐藏实现细节。 #### 7. Java 集合框架的接口与类层次结构图 - **集合框架概览**:解释集合框架的核心接口和类,如 `Collection`、`List...

    接口类怎么用

    7. **接口与枚举**:Java 5之后,接口还可以包含枚举类型,这在定义常量集时非常有用。虽然上面的例子中没有用到,但这是一个强大的特性,可以用来增强接口的功能。 总结来说,接口在Java中是实现多态、解耦和代码...

    举例讲解Java的Hibernate框架中的多对一和一对多映射

    在Java的Hibernate框架中,映射机制是连接数据库模型与对象模型的关键,它允许开发者将数据库表结构映射为Java类。本篇文章将详细讲解在Hibernate中如何实现多对一和一对多的映射关系。 首先,我们来看多对一(Many...

    java面试宝典花期银行的

    - 枚举:枚举类型的作用及用法。 - 泛型:理解泛型的基本概念,类型擦除,以及通配符的使用。 3. **异常处理** - 异常分类:运行时异常与检查异常的区别。 - 自定义异常:何时创建自定义异常,如何抛出和捕获。...

    21天学通Java-由浅入深

    Java简介(精彩视频:33分钟) 21 1.1 Java的平台简介 21 1.2 安装工具包 22 1.2.1 下载JDK 22 1.2.2 安装JDK 24 1.2.3 查看与设置环境变量 25 1.2.4 JDK常用命令 27 1.2.5 Java各个目录含义 28 1.2.6 要善于使用JDK...

Global site tag (gtag.js) - Google Analytics