方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集。
源码
package java.lang.reflect;
/**
* 方法类。
*/
public final class Method extends Executable {
/**
* 获取方法外部类的信息。
*/
@Override
public Class<?> getDeclaringClass() {
return clazz;
}
/**
* 方法名字。
*/
@Override
public String getName() {
return name;
}
/**
* 方法修饰符。
*/
@Override
public int getModifiers() {
return modifiers;
}
/**
* 返回值类型。
*/
public Class<?> getReturnType() {
return returnType;
}
/**
* 参数类型。
*/
@Override
public Class<?>[] getParameterTypes() {
return parameterTypes.clone();
}
/**
* 参数个数。
*/
public int getParameterCount() { return parameterTypes.length; }
/**
* 参数泛型。
*/
@Override
public Type[] getGenericParameterTypes() {
return super.getGenericParameterTypes();
}
/**
* 获取异常类型。
*/
@Override
public Class<?>[] getExceptionTypes() {
return exceptionTypes.clone();
}
/**
* 执行方法。
*/
@CallerSensitive
public Object invoke(Object obj, Object... args) throws IllegalAccessException {
MethodAccessor ma = methodAccessor;
if (ma == null) {
ma = acquireMethodAccessor();
}
return ma.invoke(obj, args);
}
/**
* 是否是接口中的默认方法。
*/
public boolean isDefault() {
return ((getModifiers() & (Modifier.ABSTRACT | Modifier.PUBLIC | Modifier.STATIC)) ==
Modifier.PUBLIC) && getDeclaringClass().isInterface();
}
/**
* 返回注解的默认值。
*/
public Object getDefaultValue() {
return result;
}
/**
* 获取方法上的注解。
*/
public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
return super.getAnnotation(annotationClass);
}
/**
* 获取方法上的所有注解。
*/
public Annotation[] getDeclaredAnnotations() {
return super.getDeclaredAnnotations();
}
/**
* 获取参数上的注解。
*/
@Override
public Annotation[][] getParameterAnnotations() {
return sharedGetParameterAnnotations(parameterTypes, parameterAnnotations);
}
/**
* 获取注解的类型。
*/
@Override
public AnnotatedType getAnnotatedReturnType() {
return getAnnotatedReturnType0(getGenericReturnType());
}
}