反射API的方法

来源:百度知道 编辑:UC知道 时间:2024/06/01 12:18:05
import java.lang.reflect.*;
class ClassTest
{
public static void main(String[] args)
{
if(args.length!=1)
{
return;
}

try
{
Class c=Class.forName(args[0]);
Constructor []con=c.getDeclaredConstructors();

Class []param=con[0].getParameterTypes();
Object []paramValues=new Object[param.length];
for(int i=0;i<param.length;i++)
{
if(param[i].isPrimitive())
{
paramValues[i]=new Integer(i+3);
}
}
Object o=con[0].newInstance(paramValues);
Method []ms=c.getDeclaredMethods();
//求救各位大虾,下面的方法该怎么写。。。
}
catch(Exception e)
{
e.printStackTrace();
}
}
}

class Point
{
static
{
System.out.println("Loading Point");
}
void output()
{

有时候需要知道比Class类所提供的信息多得多的有关一个类型的信息。出于这种目的,可以使用程序包java.lang.reflect中的类,换句话说就是所说的反射API。这个类集提高了Class类的能力和有效性。

反射API支持一种名为自省的行为,这种行为实际上使一个类描述自身。

反射API使对象具有反射自己和发现自身内容的能力。程序包java.lang.reflect定义了很多类,这些类总体上对一个对象作了完整的描述。

下面给出了这3种类表示类的构建块:
(1)Constructor类的每个实例都提供了关于一个类的一个构造函数的信息,并且为调用程序提供了使用这个构造函数以创建一个对象的方式。
(2)Method类的每个实例都提供了关于一个类的一种方法的信息,并且为调用程序提供了调用这种方法的方式。这种方法可能是类的方法或者实例的方法,而且可能是抽象的。
(3)Field类的每个实例都提供了关于一个类的一个域的信息,并且为调用程序提供了获得和设置这个域的值的方法。这个域可以是类变量或者实例变量。

下面用一个例子帮助大家了解:

1import java.lang.reflect.*;
2
3public class ReflectionDemo
4{
5 public static void main(String[] args)
6 {
7 try
8 {
9 ReflectionDemo demo = new ReflectionDemo();
10
11 Method myMethod;
12 Class[] parameterTypes;
13 Object[] parameters;
14 Object result;
15
16 TestClass te