View on GitHub

我的学习笔记

好记性不如烂笔头

5.7 反射

5.7.2 捕获异常

API 所在包 描述 参数以及描述
static Class forName(String className) java.lang.Class 返回类名为className的Class对象  
Object newInstance() java.lang.Class 返回这个类的一个新实例  
Object newInstance(Object[] args) java.lang.reflect.Constructor 构造一个这个构造器所属类的新实例 args: 这是提供构造器的参数
void printStackTrace() java.lang.Throwable 将Throwable对象和栈轨迹输出到标准错误流  

5.7.3 利用反射分析类的能力

API 所在包 描述 参数与描述
Field[] getFields()
Field[] getDeclared()
java.lang.Class getFields方法将返回一个包含Field对象的数组,
这些对象记录了这个类和其父类公有域
getDeclared方法也将返回包含Field对象的数组,
这些对象记录了这个类的全部域
如果类中没有域,
或者Class对象描述的是基本类型或者数组类型
这些方法将返回一个长度为0的数组
Method[] getMethods()
Method[] getDeclareMethods()
java.lang.Class 返回包含Method对象的数组
getMethods将返回所有的公共方法,
包括从父类继承来的公有方法
getDeclareMethods返回这个类或接口的全部方法,
但不包括由父类继承来的方法
 
Constructor[] getConstructors()
Constructor[] getDeclareContructors()
java.lang.Class 返回包含Constructor对象的数组
其中包含了Class对象所描述的公有构造器(getConstructors)所有构造器(getDeclaredConstructors)
 
Class getDeclaringClass() java.lang.reflect.Field
java.lang.reflect.Method
java.lang.reflect.Constructor
返回一个用于描述类中定义的构造器、方法或域的Class对象  
Class[] getExceptionTypes() java.lang.reflect.Field
java.lang.reflect.Method
java.lang.reflect.Constructor
返回一个用于描述方法抛出的异常类型的Class对象数组  
int getModifiers() java.lang.reflect.Field
java.lang.reflect.Method
java.lang.reflect.Constructor
返回一个用于描述构造器、方法或域的修饰符的整形数值.
使用Modifier类中的这个方法可以分析这个返回值
 
String getName() java.lang.reflect.Field
java.lang.reflect.Method
java.lang.reflect.Constructor
返回一个用于描述构造器、方法或域名的字符串  
Class[] getParamterTypes() java.lang.reflect.Field
java.lang.reflect.Method
java.lang.reflect.Constructor
返回一个用于描述参数类型的Class对象数组  
Class getReturnType() java.lang.reflect.Field
java.lang.reflect.Method
java.lang.reflect.Constructor
返回一个用于描述返回类型的Class对象  
static String toString(int modifier) java.lang.reflect.Modifier 返回对应modifiers中位设置的修饰符的字符串表示  
static boolean isAbstract(int modifiers)

static boolean isFinal(int modifiers)

static boolean isInterface(int modifiers)

static boolean isNative(int modifiers)

static boolean isPrivate(int modifiers)

static boolean isProtected(int modifiers)

static boolean isPublic(int modifiers)

static boolean isStatic(int modifiers)

static boolean isStrcit(int modifiers)

static boolean isSynchronized(int modifiers)

static boolean isVolatile(int modifiers)
java.lang.reflect.Modifier 这些方法将检测方法名中对应的修饰符在modifiers值中的位  

5.7.4 在运行时使用反射分析对象

API 所在包 描述 参数与描述
void setAccessible(boolean flag) java.lang.reflect.AccessibleObject 为反射对象设置可访问标志 flag:true表明屏蔽Java语言的访问检查,使得对象的私有属性也可以被查询和设置
boolean isAccessible() java.lang.reflect.AccessibleObject 返回反射对象的可访问标志的值  
static void setAccessible(AccessibleObject[] array,boolean flag) java.lang.reflect.AccessibleObject 是一种设置对象数组可访问标志的快捷方法  
Field getField(String name)

Field[] getField()
java.lang.Class 返回指定名称的公有域,或包含所有域的数组  
Field getDeclaredField(String name)

Field[] getDeclaredFields()
java.lang.Class 返回类声明中的给定名称的域,或者包含声明的全部域的数组  
Object get(Object obj) java.lang.reflect.Field 返回obj对象中Field对象表示的域值  
void set(Object obj,Object newValue) java.lang.reflect.Field 用一个新值设置obj对象中Field对象表示的域  

5.7.5 使用反射编写泛型数组代码

API 所在包 描述
static Object get(Object array,int index)

static [primitiveTypes] get[primitiveTypes](Object array,int index)
java.lang.reflect.Array [primitiveTypes]是boolean,byte,char,double,float,int,long,short之中的一种基本类型
这些方法将返回存储在指定位置上的数组内容
static void set(Object array,int index,Object newValue)

static set[primitiveTypes](Object array,int index,[primitiveTypes] newValue)
java.lang.reflect.Array [primitiveTypes]是boolean,byte,char,double,float,int,long,short之中的一种基本类型
这些方法将一个新值存储到指定的位置上面
static int getLength(Object array) java.lang.reflect.Array 返回数组的长度
static Object newInstance(Class componentType,int length)

static Object newInstance(Class componentType,int[] lengths)
java.lang.reflect.Array 返回一个具有给定类型、给定维数的新数组

5.7.6 调用任意方法

API 所在包 描述
public Object invoke(Object implicitParameter,Object[] explictParameters) java.lang.reflect.Method 调用这个方法所描述的方法,传递给定参数,并返回方法的返回值

返回