关于枚举的用法, 备忘一下.
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应用程序接口,...以上仅是Java API的冰山一角,Java API还包括许多其他重要概念,如枚举、注解、并发工具类、正则表达式等。通过深入学习和实践,可以掌握更多Java API的使用技巧,提升编程能力。
Java枚举(Enum)在编程中扮演着重要的角色,它是一种特殊的类,允许开发者定义一组预定义的常量。在Java中,枚举是通过关键字`enum`来创建的,它提供了一种更加安全和优雅的方式来处理有限的、固定的选项集合。本文...
枚举(Enum)和泛型(Generic)是Java编程语言中的两种强大特性,它们极大地提升了代码的可读性、安全性和复用性。本篇文章将深入探讨这两种概念及其在实际应用中的示例。 首先,我们来看枚举。枚举是一种预定义的...
### Java中的内部类应用举例 #### 一、Java内部类概览 在Java编程语言中,内部类(Inner Classes)是一种独特的概念,它允许开发者在类的内部定义另一个类。这种设计模式增强了代码的封装性和模块化,同时也提供了...
枚举(Enum)是Java语言中一种特殊的类,用于表示一组固定的常量值。枚举类型可以包含方法、构造函数、变量等,使得它可以像普通类一样拥有丰富的功能。在本示例中,我们将通过枚举实现星期的转换功能。 #### 枚举...
- **包**:JAVA使用包(package)的概念来组织类,可以定义多层目录结构来管理类库。 #### 五、标准库与API - **C++**:提供了丰富的标准库,如STL(Standard Template Library),支持泛型编程,包括容器(container)...
5. **IO流**:学习如何使用Java的输入输出系统,包括文件读写、对象序列化、字节流和字符流的操作,以及NIO(New IO)框架。 6. **多线程**:Java提供了内置的多线程支持。示例源码会展示如何创建和管理线程,同步...
此外,本教程可能还会介绍一些高级主题,如反射、枚举、注解、泛型、Lambda表达式、JavaFX(用于创建桌面应用程序)以及Java EE(企业级应用开发)的基础知识。 总之,“Java简明教程-第3版”的课件和源码是一个...
java中除了类和接口,还有一个类型叫做枚举(enum),它出现得比较晚,在JDk1.5之后才出,因此对我们来说并不常用,但是它的作用还是不小。 创建的时候前面和创建类、接口一样,在new之后,我们选择enum即可。表面上...
学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢? 13 1.5.3 运行Java程序 14 1.5.4 根据...
- `String`类型虽然可以通过转换为枚举类型间接使用`switch`,但默认情况下不支持直接使用。 6. **类型转换与运算** - **知识点**: - `short s1 = 1; s1 = s1 + 1;`会报错,因为类型自动提升。 - `short s1 = ...
·课程共30天,715个知识视频小节,涉及主流Java使用的方方面面,全而不冗余 ·全程内容涵盖数据结构、设计模式、JVM内存结构等深度技术 ·企业级笔试面试题目深入源码级讲解,拒绝死记硬背 4.代码量更大、案例更...
- **实际应用场景**:举例说明不同访问级别的使用场景,比如在包内共享资源或隐藏实现细节。 #### 7. Java 集合框架的接口与类层次结构图 - **集合框架概览**:解释集合框架的核心接口和类,如 `Collection`、`List...
7. **接口与枚举**:Java 5之后,接口还可以包含枚举类型,这在定义常量集时非常有用。虽然上面的例子中没有用到,但这是一个强大的特性,可以用来增强接口的功能。 总结来说,接口在Java中是实现多态、解耦和代码...
在Java的Hibernate框架中,映射机制是连接数据库模型与对象模型的关键,它允许开发者将数据库表结构映射为Java类。本篇文章将详细讲解在Hibernate中如何实现多对一和一对多的映射关系。 首先,我们来看多对一(Many...
- 枚举:枚举类型的作用及用法。 - 泛型:理解泛型的基本概念,类型擦除,以及通配符的使用。 3. **异常处理** - 异常分类:运行时异常与检查异常的区别。 - 自定义异常:何时创建自定义异常,如何抛出和捕获。...
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...