ExtFilter.ExtFilterFactory| 构造器和说明 |
|---|
ExtFilterImplByV140(ExtFilter target,
boolean isHasInterfaceTypes,
boolean isHasAnnotationTypes,
boolean isBehaviorHasWithParameterTypes,
boolean isBehaviorHasExceptionTypes,
boolean isBehaviorHasAnnotationTypes)
增强过滤器V140实现
|
| 限定符和类型 | 方法和说明 |
|---|---|
boolean |
doClassFilter(int access,
String javaClassName,
String superClassTypeJavaClassName,
String[] interfaceTypeJavaClassNameArray,
String[] annotationTypeJavaClassNameArray)
过滤出匹配的类
|
boolean |
doMethodFilter(int access,
String javaMethodName,
String[] parameterTypeJavaClassNameArray,
String[] throwsTypeJavaClassNameArray,
String[] annotationTypeJavaClassNameArray)
过滤出匹配的方法
严格意义上来说,该方法被调用的时候,一定是
Filter.doClassFilter(int, String, String, String[], String[])上一次返回true的调用。 |
boolean |
isBehaviorHasAnnotationTypes()
是否需要方法注解类型
|
boolean |
isBehaviorHasExceptionTypes()
是否需要方法异常类型
|
boolean |
isBehaviorHasWithParameterTypes()
是否需要方法参数类型
|
boolean |
isHasAnnotationTypes()
是否需要过滤注解类型
|
boolean |
isHasInterfaceTypes()
是否需要过滤接口类型
|
boolean |
isIncludeBootstrap()
是否搜索来自BootstrapClassLoader所加载的类
|
boolean |
isIncludeSubClasses()
是否搜索子类或实现类
|
public ExtFilterImplByV140(ExtFilter target, boolean isHasInterfaceTypes, boolean isHasAnnotationTypes, boolean isBehaviorHasWithParameterTypes, boolean isBehaviorHasExceptionTypes, boolean isBehaviorHasAnnotationTypes)
target - 代理增强过滤器目标isHasInterfaceTypes - 是否需要过滤接口类型isHasAnnotationTypes - 是否需要过滤注解类型isBehaviorHasWithParameterTypes - 是否需要方法参数类型isBehaviorHasExceptionTypes - 是否需要方法异常类型isBehaviorHasAnnotationTypes - 是否需要方法注解类型public boolean isHasInterfaceTypes()
public boolean isHasAnnotationTypes()
public boolean isBehaviorHasWithParameterTypes()
public boolean isBehaviorHasExceptionTypes()
public boolean isBehaviorHasAnnotationTypes()
public boolean isIncludeSubClasses()
ExtFilterisIncludeSubClasses 在接口中 ExtFilterpublic boolean isIncludeBootstrap()
ExtFilterisIncludeBootstrap 在接口中 ExtFiltersandbox.properties#unsafe.enable=true配合使用才能生效public boolean doClassFilter(int access,
String javaClassName,
String superClassTypeJavaClassName,
String[] interfaceTypeJavaClassNameArray,
String[] annotationTypeJavaClassNameArray)
FilterdoClassFilter 在接口中 Filteraccess - access flagjavaClassName - 类名(全路径名称)superClassTypeJavaClassName - 父类(全路径名称)interfaceTypeJavaClassNameArray - 接口类型名称数组annotationTypeJavaClassNameArray - 标注原数据类型名称数组(注意,此参数尚未支持,只是预留一个API占位)public boolean doMethodFilter(int access,
String javaMethodName,
String[] parameterTypeJavaClassNameArray,
String[] throwsTypeJavaClassNameArray,
String[] annotationTypeJavaClassNameArray)
Filter
严格意义上来说,该方法被调用的时候,一定是Filter.doClassFilter(int, String, String, String[], String[])上一次返回true的调用。
所以可以通过简单的引用就可以在doMethodFilter执行的时候拿到doClassFilter的信息
如果你需要综合对Class和Method做一个拉平之后的综合判断,可以考虑使用OrGroupFilter来实现
doMethodFilter 在接口中 Filteraccess - access flagjavaMethodName - 方法名称(包括类名称,静态方法名,普通方法名和构造函数)parameterTypeJavaClassNameArray - 参数类型名称数组throwsTypeJavaClassNameArray - 声明异常类型名称数组annotationTypeJavaClassNameArray - 标注原数据类型名称数组(注意,此参数尚未支持,只是预留一个API占位)Copyright © 2023 Alibaba Open Source. All rights reserved.