关于反射机制 获取类的方法参数类型返回值是Class类型的数组的 好处在哪里

时间:2021-09-03 00:26:19
获取类的方法参数类型返回  Class类型(为什么不是别的类型)的数组的好处在哪里  Class 和 constructor 存在什么关系呢 
public static void main(String[] args) {

Class c = student.class;

Constructor con[]=c.getConstructors();

for (int i = 0; i < con.length; i++) {
constructor = con[i];
Class[] c1=constructor.getParameterTypes(); for (int j = 0; j < c1.length; j++) {

Class class1 = c1[j];

System.out.print(c1[j].getName());

}
System.out.println("-----------------------------");

}




}

}

7 个解决方案

#1


那你认为应该是么类型呢?

#2


返回什么类型?Class是一个类的模板,能描述了一个类。

你获得一个类的constructor也就是构造方法后,要想调用,必须知道这个类的构造方法需要参数的个数和类型。。

Class就可以很详细的描述一个参数的类型,知道类型后调用时就知道要传什么类型的值进去。。

Class可以很明确的知道一个类里面有几个constructor,还有constructor所需要的参数。

整体来说,Class就是一个类的设计图纸,上面很清楚的描述了这个类的结构。

#3


在运行中的 Java 程序中,用 java.lang.Class 类来描述类和接口等。 
下面就是获得一个 Class 对象的方法之一: 
Class c = Class.forName("java.lang.String"); 
这条语句得到一个 String 类的类对象。还有另一种方法,如下面的语句: 
Class c = int.class; 
或者 
Class c = Integer.TYPE; 
它们可获得基本类型的类信息。其中后一种方法中访问的是基本类型的封装类 (如 Integer) 中预先定义好的 TYPE 字段。 
然后是调用诸如 getDeclaredMethods 的方法,以取得该类中定义的所有方法的列表。 
一旦取得这个信息,就可以进行下一步了——使用 reflection API 来操作这些信息,如下面这段代码: 
Class c = Class.forName("java.lang.String"); 
Method m[] = c.getDeclaredMethods(); 
System.out.println(m[0].toString()); 
它将以文本方式打印出 String 中定义的第一个方法的原型。 
这三个步骤将为使用 reflection 处理特殊应用程序提供例证。 
模拟 instanceof 操作符 
得到类信息之后,通常下一个步骤就是解决关于 Class 对象的一些基本的问题。例如,Class.isInstance 方法可以用于模拟 instanceof 操作符

#4


该回复于2015-05-26 10:06:41被管理员删除

#5


为了看那80分的帖子!

#6


有点失望

#7


我在这个地方看到了java反射机制中的比较深入的讨论,重点说了反射的自检self-representation ,原因链接,安全性,常用方法,反射的性能劣势等,http://www.7747.net/kf/201103/86455.html

#1


那你认为应该是么类型呢?

#2


返回什么类型?Class是一个类的模板,能描述了一个类。

你获得一个类的constructor也就是构造方法后,要想调用,必须知道这个类的构造方法需要参数的个数和类型。。

Class就可以很详细的描述一个参数的类型,知道类型后调用时就知道要传什么类型的值进去。。

Class可以很明确的知道一个类里面有几个constructor,还有constructor所需要的参数。

整体来说,Class就是一个类的设计图纸,上面很清楚的描述了这个类的结构。

#3


在运行中的 Java 程序中,用 java.lang.Class 类来描述类和接口等。 
下面就是获得一个 Class 对象的方法之一: 
Class c = Class.forName("java.lang.String"); 
这条语句得到一个 String 类的类对象。还有另一种方法,如下面的语句: 
Class c = int.class; 
或者 
Class c = Integer.TYPE; 
它们可获得基本类型的类信息。其中后一种方法中访问的是基本类型的封装类 (如 Integer) 中预先定义好的 TYPE 字段。 
然后是调用诸如 getDeclaredMethods 的方法,以取得该类中定义的所有方法的列表。 
一旦取得这个信息,就可以进行下一步了——使用 reflection API 来操作这些信息,如下面这段代码: 
Class c = Class.forName("java.lang.String"); 
Method m[] = c.getDeclaredMethods(); 
System.out.println(m[0].toString()); 
它将以文本方式打印出 String 中定义的第一个方法的原型。 
这三个步骤将为使用 reflection 处理特殊应用程序提供例证。 
模拟 instanceof 操作符 
得到类信息之后,通常下一个步骤就是解决关于 Class 对象的一些基本的问题。例如,Class.isInstance 方法可以用于模拟 instanceof 操作符

#4


该回复于2015-05-26 10:06:41被管理员删除

#5


为了看那80分的帖子!

#6


有点失望

#7


我在这个地方看到了java反射机制中的比较深入的讨论,重点说了反射的自检self-representation ,原因链接,安全性,常用方法,反射的性能劣势等,http://www.7747.net/kf/201103/86455.html