Stri
gargstryClasscClassforNameargs0MethodmcgetDeclaredMethodsfori
ti0imle
gthiSystemoutpri
tl
mitoStri
gcatchThrowableeSystemerrpri
tl
e
按如下语句执行:
javaDumpMethodsjavautilStack
f它的结果输出为:
publicjavala
gObjectjavautilStackpushjavala
gObject
publicsy
chro
izedjavala
gObjectjavautilStackpop
publicsy
chro
izedjavala
gObjectjavautilStackpeek
publicboolea
javautilStackempty
publicsy
chro
izedi
tjavautilStacksearchjavala
gObject
这样就列出了javautilStack类的各方法名以及它们的限制符和返回类型。
这个程序使用ClassforName载入指定的类,然后调用getDeclaredMethods来获取这个类中定义了的方法列表。javala
greflectMethods是用来描述某个类中单个方法的一个类。
12Java类反射中的主要方法
对于以下三类组件中的任何一类来说构造函数、字段和方法javala
gClass提供四种独立的反射调用,以不同的方式来获得信息。调用都遵循一种标准格式。以下是用于查找构造函数的一组反射调用:
lCo
structorgetCo
structorClassparams获得使用特殊的参数类型的公共构造函数,
lCo
structorgetCo
structors获得类的所有公共构造函数
flCo
structorgetDeclaredCo
structorClassparams获得使用特定参数类型的构造函数与接入级别无关
lCo
structorgetDeclaredCo
structors获得类的所有构造函数与接入级别无关
获得字段信息的Class反射调用不同于那些用于接入构造函数的调用,在参数类型数组中使用了字段名:
lFieldgetFieldStri
g
ame获得命名的公共字段
lFieldgetFields获得类的所有公共字段
lFieldgetDeclaredFieldStri
g
ame获得类声明的命名的字段
lFieldgetDeclaredFields获得类声明的所有字段
用于获得方法信息函数:
lMethodgetMethodStri
g
ameClassparams使用特定的参数类型,获得命名的公共方法
lMethodgetMethods获得类的所有公共方法
lMethodgetDeclaredMethodStri
g
ameClassparams使用特写的参数类型,获得类声明的命名的方法
lMethodgetDeclaredMethods获得类声明的所有方法
f13开始使用Reflectio
:
用于reflectio
的类,如Method,可以在javala
grelfect包中找到。使用这些类的时候必须要遵循三个步骤:第一步是获得你想操作的类的javala
gClass对象。在运行中的Java程序中,用javala
gClass类来描述类和接口等。
下面就是获得一个Class对象的方法之一:
ClasscClassforName