All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commons.box.app.bean.ClassAccess Maven / Gradle / Ivy

The newest version!
package commons.box.app.bean;

import commons.box.app.AppError;

import java.util.Map;

/**
 * 

创建作者:xingxiuyi

*

版权所属:xingxiuyi

*/ public interface ClassAccess extends MetaAccess { /** * 类 Annotation 访问器 * * 关于 Annotation 中 Inherited 规则 *

* 此方法返回的 Annotations 遵循 JDK Annotation 中 Inherited 规则 * *

    *
  • 如果 Annotation 声明了 Inherited 则将其当做可识别的 Annotation 返回
  • *
  • 如果 Annotation 未声明 Inherited 通过 getAnnotations() 方法不会识别到该 Annotation 声明
  • *
*

* 此方法等效于 accessAnnotation(false) * * @return */ public ClassAccessAnnotation accessAnnotation(); /** * 类 Annotation 访问器 *

* 如果 withNonInheriteds=false 此方法的逻辑与 accessAnnotation() 一致 *

* 如果 withNonInheriteds=true 此方法返回的访问器将会包含所有上级已声明的 Annotation(同时也包括上级类未声明为 Inherited 的注解) * * @param withNonInheriteds * @return */ public ClassAccessAnnotation accessAnnotation(boolean withNonInheriteds); public Map> accessFields(); public Map[]> accessMethods(); public Map> accessProperties(); /** * 是否可以访问 * * @return */ public boolean canRead(); /** * 获取类名 * * @return */ public String name(); /** * 获取目标类 * * @return */ public Class type(); /** * 创建实例 * * @param parameters * @return * @throws AppError */ public T instance(Object... parameters) throws AppError; /** * 字段访问器 * * @param name * @return */ public ClassAccessField field(String name); /** * 方法访问器 * * @param name * @param parameterTypes * @return */ public ClassAccessMethod method(String name, Class... parameterTypes); /** * 属性访问器 * * @param name * @return */ public

ClassAccessProperty prop(String name); /** * 是否含有属性 * * @param property * @return */ public boolean has(String property); /** * 是否包含字段 * * @param field * @return */ public boolean hasField(String field); /** * 是否包含方法 * * @param methodName * @param parameterTypes * @return */ public boolean hasMethod(String methodName, Class... parameterTypes); /** * 获取属性值 * * @param object * @param fieldName * @return * @throws AppError */ public F field(T object, String fieldName) throws AppError; /** * 设置属性值 * * @param object * @param fieldName * @param value * @throws AppError */ public void field(T object, String fieldName, F value) throws AppError; /** * 调用方法 * * @param object * @param name * @param parameters * @return * @throws AppError */ public M invoke(T object, String name, Object... parameters) throws Throwable; /** * 调用方法 如果类型未给定根据参数自动判断 * * @param object * @param name * @param parameterTypes * @param parameters * @return * @throws AppError */ public M invokeByTypes(T object, String name, Class[] parameterTypes, Object... parameters) throws Throwable; /** * 获取属性值 * * @param object * @param property * @return * @throws AppError */ public

P get(T object, String property) throws AppError; /** * 设置属性值 * * @param object * @param property * @param value * @throws AppError */ public

void set(T object, String property, P value) throws AppError; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy